編譯linux程序
Ⅰ 程序linux編譯64位程序實現更高性能linux編譯64位
Linux編譯64位程序以實現更高性能是一個非常棘手的任務,因為它需要把完全不同的架構結合起來才能實現最佳性能。例如,一個64位處理器,一個64位操作系統,以及一個64位軟體開發環境都是不可或缺的。
在Linux系統中編譯64位程序,首先要安裝一個支持64位操作系統的處理器。它可以是Intel的Pentium 4或對應的AMD處理器,也可以是PowerPC,SPARC或IBM的64位處理器,也可以是更新的處理器。安裝完處理器後,就可以安裝64位的Linux操作系統,比如Fedora或Ubuntu。安裝完成後,你就可以編譯64位軟體。
編譯64位程序的第二步是安裝64位開發環境,比如GNU Compiler Collection (GCC)。GNU GCC支持多種編譯器及其工具,兼容Windows和Linux種64位操作系統,因而可以為你提供更容易使用的開發環境。
最後一步就是開始編譯了。要用到的工具有GCC的g++編譯器,GNU Binutils的as和ld,以及任意的其它調試器或編輯器。通過使用g++編譯器和GNU Binutils的as和ld,我們可以為64位應用程序編譯源代碼,並生成目標文件。在編譯過程中可以使用任意的調試器或編輯器來檢查代碼,對它進行可靠性檢查,並使用編譯選項來進一步優化程序性能。
最終,使用ld工具可以將多個目標文件鏈接起來生成可執行文件,也就是64位應用程序的最終文件。當64位程序生成後,你就可以使用它來實現更高的性能了。
總而言之,編譯64位程序以實現更高性能是一項艱巨的任務,但是也是有可行性的。使用正確的工具和技術,可以有效地實現64位應用程序的最佳性能。
Ⅱ linux 如何運行編譯程序
gcc有多達100多個參數,現介紹常用的幾個。如果對其他參數也有興趣,可以參考:man gcc
預先處理選項
-E: 只對文件進行預處理,輸出結果到標准輸出
-C: 告訴預處理器不要丟棄注釋.配合`-E『選項使用.-P: 告訴預處理器不要產生`#line'命令.配合`-E'選項使用.
-v: 顯示正在使用的gcc的版本
常用編譯選項
-c: 將源程序編譯為目標代碼但並不做鏈接的工作,不生成最終的可執行文件,只生成一個與源文件文件名相同的以.o為後綴的目標文件。
-S:將遠程序編譯為一個後綴為.s的匯編語言文件,不會生成可執行文件
-x:強制編譯器用指定的語言編譯器來編譯某個源文件
gcc -x c++ test.c 表示強制用C++編譯器來編譯c程序
-static: 強制連接靜態庫,運行時不依賴動態庫
-share: 編譯時盡量使用動態庫
-o: 指定生成的可執行文件名,如果沒有該選項,如果生成可執行文件,默認文件名為a.out
編譯路徑選項
-i : 指定特定頭文件
gcc –c -i /home/zry/test.h test.c
-I<DIR>:依賴選項,指定頭文件路徑
Linux下大多數函數將頭文件放在/usr/include目錄下,如果需要指定其他路徑,可以使用該選項
gcc –I/home/zry/include –c test.c 添加/home/zry/include到查找路徑
-L<DIR> : 指定庫文件搜素路徑,用法同上
-l<庫名>:指定特定庫文件
gcc –lapp –c test.c
Linux的庫文件有一個約定,即以lib開頭,-lapp表示連接libapp.so庫文件
目標生成選項
-shared: 生成動態庫
gcc –shared libtest.so -i /home/zry/test.h test.c
生成靜態庫需要ar命令,後面講解
-fPIC: 生成可用於動態庫的位置獨立代碼。所有的內部定址均通過全局偏移表完成。
-ansi:支持符合ANSI標準的C程序.
該選項就會關閉GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof關鍵字以及諸如unix和vax這些表明當前系統類型的預定義宏。
__asm__, __extension__, __inline__和__typeof__仍然有效
使用`-ansi'選項的時候,預處理器會預定義一個__STRICT_ANSI__宏.有些頭文件 關注此宏,以避免聲明某些函數,或者避免定義某些宏,這些函數和宏不被ANSI標准調用;這樣就不會干擾在其他地方使用這些名字的程序了.
fno-asm:此選項實現ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字。
-fno-strict-prototype:只對g++起作用,使用這個選項,g++將對不帶參數的函數,都認為是沒有顯式的對參數的個數和類型說明,而不是沒有參數.而gcc無論是否使用這個參數,都將對沒有帶參數的函數,認為沒有顯式說明的類型
-fthis-is-varialble:就是向傳統c++看齊,可以使用this當一般變數使用
-fcond-mismatch:允許條件表達式的第二和第三參數類型不匹配,表達式的值將為void類型
-funsigned-char:
-fno-signed-char:
-fsigned-char:
-fno-unsigned-char:
這四個參數是對char類型進行設置,將char類型設置unsigned char(前兩個參數)或者 signed char(後兩個參數)
-imacros file: 將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身並不出現在輸入文件中
-Dmacro: 相當於C語言中的#define macro
-Dmacro=defn: 相當於C語言中的#define macro=defn
-Umacro: 相當於C語言中的#undef macro
-undef: 取消對任何非標准宏的定義
-M: 生成文件關聯的信息。包含目標文件所依賴的所有源代碼
-MM: 和M一樣,但是它將忽略由#include<file>造成的依賴關系。
-MD: -M相同,但是輸出將導入到.d的文件裡面
-MMD: 和-MM相同,但是輸出將導入到.d的文件裡面
警告選項
fsyntax-only:檢查程序中的語法錯誤,但是不產生輸出信息.
-w:禁止所有警告信息.
-Wno-import: 禁止所有關於#import的警告信息.
-pedantic:打開完全遵從ANSI C標准所需的全部警告診斷;拒絕接受採用了被禁止的語法擴展的程序.
-Werror:將所有警告轉換為錯誤
Werror選項要求GCC將所有警告當作錯誤進行處理。
-Wall: 顯示所有警告信息
Ⅲ linux中make,makeinstall命令分別是什麼,用法
Linux中的make命令與make install命令分別用於編譯程序和安裝程序。
make命令
make命令是Linux系統中一個非常強大的工具,用於自動化編譯源代碼。它通過讀取一個名為Makefile的文件,來確定如何編譯源代碼、生成目標文件和執行其他任務。Makefile是一個包含構建項目所需信息的文本文件,其中包含編譯程序的規則。使用make命令時,它會按照Makefile中指定的步驟來執行操作,包括編譯源代碼文件、生成可執行文件以及執行其他構建任務。這樣,開發人員可以通過簡單地輸入“make”命令來自動完成整個編譯過程。用法如下:
在終端中輸入“make”即可執行Makefile文件中的默認目標。如果需要指定特定的目標進行編譯,可以在make命令後面加上目標名稱,例如“make target_name”。此外,make命令還支持一些選項和參數,如“-f”選項用於指定Makefile文件的路徑,“-j”選項用於指定並行編譯的任務數等。
make install命令
make install命令用於安裝經過編譯後的程序。在執行完源代碼的編譯後,通常需要在Linux系統中安裝生成的程序,使其可以在系統路徑下找到並執行。這時,可以使用make install命令來完成安裝工作。用法如下:
在終端中輸入“make install”,即可根據Makefile中的安裝規則來安裝程序。Makefile中包含了安裝程序所需的步驟和指令,如復制文件到指定目錄、創建符號鏈接等。通過執行make install命令,開發人員可以輕松地完成程序的安裝工作。同樣地,make install命令也支持一些選項和參數,以便在必要時進行定製化的安裝操作。
總結一下,Linux中的make命令用於自動化編譯源代碼,而make install命令用於安裝經過編譯的程序。這兩個命令在軟體開發和部署過程中起著重要的作用,可以大大提高開發效率和便利性。通過使用這兩個命令,開發人員可以更加輕松地構建和安裝他們的程序。
Ⅳ Linux中源碼編譯安裝程序包括哪些基本步驟
第一步:創建編譯腳本
進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
第二部:編譯
執行 make
第三部:安裝
執行 make install
當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源碼包的編譯
如果是自己寫的C代碼 直接 用gcc編譯即可。
例如 編譯test.c
執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test
自己打出來的 要採納啊!