Linux編譯器(如GCC)的常用參數(shù)和選項(xiàng)非常豐富,以下是一些常用的例子:
-c
:僅編譯源文件,不進(jìn)行鏈接。-S
:生成匯編代碼文件。-E
:僅進(jìn)行預(yù)處理,不進(jìn)行編譯和鏈接。-o
:指定輸出文件的名稱。例如,gcc -o output_file source_file.c
會(huì)將 source_file.c
編譯為名為 output_file
的可執(zhí)行文件。-g
:生成調(diào)試信息,以便使用調(diào)試器(如GDB)進(jìn)行調(diào)試。這對(duì)于查找和修復(fù)代碼中的錯(cuò)誤非常有幫助。-O
:進(jìn)行優(yōu)化。-O1
、-O2
和 -O3
分別表示不同的優(yōu)化級(jí)別,級(jí)別越高,優(yōu)化程度越大。請(qǐng)注意,高優(yōu)化級(jí)別可能會(huì)增加編譯時(shí)間。-Wall
:顯示所有警告信息。這有助于發(fā)現(xiàn)代碼中的潛在問題。-Werror
:將警告視為錯(cuò)誤。這意味著如果在編譯過程中遇到任何警告,編譯都會(huì)失敗。-ansi
或 -std=c99
等:指定編譯器應(yīng)遵循的C語言標(biāo)準(zhǔn)。例如,-ansi
遵循C90標(biāo)準(zhǔn),而 -std=c99
遵循C99標(biāo)準(zhǔn)。-I
:指定頭文件的搜索路徑。這允許編譯器在指定的目錄中查找頭文件。-L
:指定庫文件的搜索路徑。這允許編譯器在指定的目錄中查找?guī)煳募?/li>
-l
:鏈接指定的庫。例如,-lm
鏈接數(shù)學(xué)庫。請(qǐng)注意,庫名稱不應(yīng)包含前綴 lib
和后綴 .a
或 .so
。-pthread
:鏈接POSIX線程庫。這對(duì)于編寫多線程程序非常有用。-D
:定義宏。例如,-DFOO=bar
定義了一個(gè)名為 FOO
的宏,其值為 bar
。-U
:取消定義宏。例如,-UFOO
取消了名為 FOO
的宏的定義。-fPIC
或 -fpic
:生成位置無關(guān)代碼(PIC)。這對(duì)于在共享庫中編譯代碼非常有用,因?yàn)镻IC代碼可以在內(nèi)存中的任何位置加載和執(zhí)行,而無需進(jìn)行重定位。-shared
:生成共享庫文件。這與 -fPIC
或 -fpic
一起使用,以創(chuàng)建可在多個(gè)程序之間共享的庫文件。-static
:生成靜態(tài)庫文件。這意味著庫中的所有代碼都將被包含在最終的可執(zhí)行文件中,而不是在運(yùn)行時(shí)鏈接到庫文件。-fexceptions
:啟用C++異常處理。-fnon-call-exceptions
:禁用C++異常處理。-Wno-unknown-pragmas
:忽略未知的編譯器指令警告。-Wstrict-prototypes
:嚴(yán)格檢查函數(shù)原型。-Wno-parentheses
:忽略不必要的括號(hào)警告。-Wno-return-type
:忽略返回類型警告。-Wno-sign-compare
:忽略符號(hào)比較警告。-Wno-uninitialized
:忽略未初始化的變量警告。-Wno-unknown-condition
:忽略未知的條件警告。-Wno-unused-value
:忽略未使用的值警告。-Wno-unused-variable
:忽略未使用的變量警告。-Wno-unused-function
:忽略未使用的函數(shù)警告。-Wno-overloaded-virtual
:忽略過載的虛函數(shù)警告。-Wno-shadow
:忽略變量遮蔽警告。-Wno-switch-enum
:忽略枚舉值在switch語句中的警告。-Wno-trigraphs
:忽略三元運(yùn)算符警告。-Wno-unknown-escape
:忽略未知的轉(zhuǎn)義序列警告。-Wno-missing-field-initializers
:忽略結(jié)構(gòu)體字段初始化警告。-Wno-missing-braces
:忽略缺少大括號(hào)的警告。-Wno-extra-semi
:忽略額外的分號(hào)警告。-Wno-parentheses-equality
:忽略括號(hào)內(nèi)表達(dá)式相等的警告。-Wno-constant-condition
:忽略恒定條件的警告。-Wno-integral-constant-expression
:忽略整數(shù)常量表達(dá)式的警告。-Wno-missing-include-dirs
:忽略缺少包含目錄的警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 noexcept
類型的警告。-Wno-noexcept-operator
:忽略 noexcept
操作符的警告。-Wno-constexpr-not-const
:忽略 constexpr
函數(shù)不是 const
的警告。-Wno-array-bounds
:忽略數(shù)組越界訪問的警告。-Wno-pointer-to-int-cast
:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。-Wno-int-to-pointer-cast
:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。-Wno-pointer-compare
:忽略指針比較的警告。-Wno-pointer-to-bool-cast
:忽略指針到布爾類型轉(zhuǎn)換的警告。-Wno-bool-to-pointer-cast
:忽略布爾到指針類型轉(zhuǎn)換的警告。-Wno-return-type-conversion
:忽略返回類型轉(zhuǎn)換的警告。-Wno-argument-type-conversion
:忽略參數(shù)類型轉(zhuǎn)換的警告。-Wno-float-conversion
:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。-Wno-complex-conversion
:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。-Wno-cast-qual
:忽略類型轉(zhuǎn)換中的限定符警告。-Wno-strict-aliasing
:忽略嚴(yán)格別名警告。-Wno-non-virtual-dtor
:忽略非虛析構(gòu)函數(shù)的警告。-Wno-vla
:忽略變量長度數(shù)組的警告。-Wno-long-long
:忽略 long long
類型使用的警告。-Wno-noexcept-type
:忽略 `no