【Linux】一步一步学Linux——gcc命令(249)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 附錄
01. 命令概述
gcc命令使用GNU推出的基于C/C++的編譯器,是開放源代碼領域應用最廣泛的編譯器,具有功能強大,編譯代碼支持性能優化等特點。
gcc是GNU編譯器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go語言和D語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。GCC的初衷是為GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟件。此處,“自由”的含義是它尊重用戶的自由。
02. 命令格式
用法:gcc [選項] 文件...03. 常用選項
-pass-exit-codes 在某一階段退出時返回最高的錯誤碼--help 顯示此幫助說明--target-help 顯示目標機器特定的命令行選項--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]顯示特定類型的命令行選項(使用‘-v --help’顯示子進程的命令行參數)--version 顯示編譯器版本信息-dumpspecs 顯示所有內建 spec 字符串-dumpversion 顯示編譯器的版本號-dumpmachine 顯示編譯器的目標處理器-print-search-dirs 顯示編譯器的搜索路徑-print-libgcc-file-name 顯示編譯器伴隨庫的名稱-print-file-name=<庫> 顯示 <庫> 的完整路徑-print-prog-name=<程序> 顯示編譯器組件 <程序> 的完整路徑-print-multiarch Display the target's normalized GNU triplet, used asa component in the library path-print-multi-directory 顯示不同版本 libgcc 的根目錄-print-multi-lib 顯示命令行選項和多個版本庫搜索路徑間的映射-print-multi-os-directory 顯示操作系統庫的相對路徑-print-sysroot 顯示目標庫目錄-print-sysroot-headers-suffix 顯示用于尋找頭文件的 sysroot 后綴-Wa,<選項> 將逗號分隔的 <選項> 傳遞給匯編器-Wp,<選項> 將逗號分隔的 <選項> 傳遞給預處理器-Wl,<選項> 將逗號分隔的 <選項> 傳遞給鏈接器-Xassembler <參數> 將 <參數> 傳遞給匯編器-Xpreprocessor <參數> 將 <參數> 傳遞給預處理器-Xlinker <參數> 將 <參數> 傳遞給鏈接器-save-temps 不刪除中間文件-save-temps=<arg> 不刪除中間文件-no-canonical-prefixes 生成其他 gcc 組件的相對路徑時不生成規范化的前綴-pipe 使用管道代替臨時文件-time 為每個子進程計時-specs=<文件> 用 <文件> 的內容覆蓋內建的 specs 文件-std=<標準> 指定輸入源文件遵循的標準--sysroot=<目錄> 將 <目錄> 作為頭文件和庫文件的根目錄-B <目錄> 將 <目錄> 添加到編譯器的搜索路徑中-v 顯示編譯器調用的程序-### 與 -v 類似,但選項被引號括住,并且不執行命令-E 僅作預處理,不進行編譯、匯編和鏈接-S 編譯到匯編語言,不進行匯編和鏈接-c 編譯、匯編到目標代碼,不進行鏈接-o <文件> 輸出到 <文件>-pie Create a position independent executable-shared Create a shared library-x <語言> 指定其后輸入文件的語言允許的語言包括:c c++ assembler none‘none’意味著恢復默認行為,即根據文件的擴展名猜測源文件的語言04. 參考示例
4.1 生成默認的可執行文件
[deng@localhost bak]$ gcc test.c [deng@localhost bak]$將test.c預處理、匯編、編譯并鏈接形成可執行文件。這里未指定輸出文件,默認輸出為a.out。
4.2 指定輸出文件
[deng@localhost bak]$ gcc test.c -o test [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c [deng@localhost bak]$將test.c預處理、匯編、編譯并鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。
4.3 僅作預處理,不進行編譯、匯編和鏈接
[deng@localhost bak]$ gcc -E test.c -o test.i [deng@localhost bak]$將test.c預處理輸出test.i文件。
4.4 編譯到匯編語言,不進行匯編和鏈接
[deng@localhost bak]$ gcc -S test.c -o test.s [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c test.i test.s [deng@localhost bak]$將預處理輸出文件test.i匯編成test.s文件。
4.5 編譯、匯編到目標代碼,不進行鏈接
[deng@localhost bak]$ gcc -c test.c -o test.o [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c test.i test.o test.s [deng@localhost bak]$4.6 將目標代碼生成可執行文件
[deng@localhost bak]$ gcc test.o -o test [deng@localhost bak]$將編譯輸出文件test.o鏈接成最終可執行文件test。
4.7 編譯時指定優化級別
[deng@localhost bak]$ gcc -O1 test.c -o test [deng@localhost bak]$使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。
4.8 多文件編譯
[deng@localhost bak]$ gcc testfun.c test.c -o test [deng@localhost bak]$將testfun.c和test.c分別編譯后鏈接成test可執行文件。
4.9 多文件編譯方法二
[deng@localhost bak]$ gcc -c test.c [deng@localhost bak]$ gcc -c testfun.c [deng@localhost bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——gcc命令(249)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——y
- 下一篇: 【Linux】一步一步学Linux——n