linux編譯器的常用參數(shù)和選項(xiàng)

小樊
81
2024-09-27 19:41:25

Linux編譯器(如GCC)的常用參數(shù)和選項(xiàng)非常豐富,以下是一些常用的例子:

  1. -c:僅編譯源文件,不進(jìn)行鏈接。
  2. -S:生成匯編代碼文件。
  3. -E:僅進(jìn)行預(yù)處理,不進(jìn)行編譯和鏈接。
  4. -o:指定輸出文件的名稱。例如,gcc -o output_file source_file.c 會(huì)將 source_file.c 編譯為名為 output_file 的可執(zhí)行文件。
  5. -g:生成調(diào)試信息,以便使用調(diào)試器(如GDB)進(jìn)行調(diào)試。這對(duì)于查找和修復(fù)代碼中的錯(cuò)誤非常有幫助。
  6. -O:進(jìn)行優(yōu)化。-O1-O2-O3 分別表示不同的優(yōu)化級(jí)別,級(jí)別越高,優(yōu)化程度越大。請(qǐng)注意,高優(yōu)化級(jí)別可能會(huì)增加編譯時(shí)間。
  7. -Wall:顯示所有警告信息。這有助于發(fā)現(xiàn)代碼中的潛在問題。
  8. -Werror:將警告視為錯(cuò)誤。這意味著如果在編譯過程中遇到任何警告,編譯都會(huì)失敗。
  9. -ansi-std=c99 等:指定編譯器應(yīng)遵循的C語言標(biāo)準(zhǔn)。例如,-ansi 遵循C90標(biāo)準(zhǔn),而 -std=c99 遵循C99標(biāo)準(zhǔn)。
  10. -I:指定頭文件的搜索路徑。這允許編譯器在指定的目錄中查找頭文件。
  11. -L:指定庫文件的搜索路徑。這允許編譯器在指定的目錄中查找?guī)煳募?/li>
  12. -l:鏈接指定的庫。例如,-lm 鏈接數(shù)學(xué)庫。請(qǐng)注意,庫名稱不應(yīng)包含前綴 lib 和后綴 .a.so。
  13. -pthread:鏈接POSIX線程庫。這對(duì)于編寫多線程程序非常有用。
  14. -D:定義宏。例如,-DFOO=bar 定義了一個(gè)名為 FOO 的宏,其值為 bar。
  15. -U:取消定義宏。例如,-UFOO 取消了名為 FOO 的宏的定義。
  16. -fPIC-fpic:生成位置無關(guān)代碼(PIC)。這對(duì)于在共享庫中編譯代碼非常有用,因?yàn)镻IC代碼可以在內(nèi)存中的任何位置加載和執(zhí)行,而無需進(jìn)行重定位。
  17. -shared:生成共享庫文件。這與 -fPIC-fpic 一起使用,以創(chuàng)建可在多個(gè)程序之間共享的庫文件。
  18. -static:生成靜態(tài)庫文件。這意味著庫中的所有代碼都將被包含在最終的可執(zhí)行文件中,而不是在運(yùn)行時(shí)鏈接到庫文件。
  19. -fexceptions:啟用C++異常處理。
  20. -fnon-call-exceptions:禁用C++異常處理。
  21. -Wno-unknown-pragmas:忽略未知的編譯器指令警告。
  22. -Wstrict-prototypes:嚴(yán)格檢查函數(shù)原型。
  23. -Wno-parentheses:忽略不必要的括號(hào)警告。
  24. -Wno-return-type:忽略返回類型警告。
  25. -Wno-sign-compare:忽略符號(hào)比較警告。
  26. -Wno-uninitialized:忽略未初始化的變量警告。
  27. -Wno-unknown-condition:忽略未知的條件警告。
  28. -Wno-unused-value:忽略未使用的值警告。
  29. -Wno-unused-variable:忽略未使用的變量警告。
  30. -Wno-unused-function:忽略未使用的函數(shù)警告。
  31. -Wno-overloaded-virtual:忽略過載的虛函數(shù)警告。
  32. -Wno-shadow:忽略變量遮蔽警告。
  33. -Wno-switch-enum:忽略枚舉值在switch語句中的警告。
  34. -Wno-trigraphs:忽略三元運(yùn)算符警告。
  35. -Wno-unknown-escape:忽略未知的轉(zhuǎn)義序列警告。
  36. -Wno-missing-field-initializers:忽略結(jié)構(gòu)體字段初始化警告。
  37. -Wno-missing-braces:忽略缺少大括號(hào)的警告。
  38. -Wno-extra-semi:忽略額外的分號(hào)警告。
  39. -Wno-parentheses-equality:忽略括號(hào)內(nèi)表達(dá)式相等的警告。
  40. -Wno-constant-condition:忽略恒定條件的警告。
  41. -Wno-integral-constant-expression:忽略整數(shù)常量表達(dá)式的警告。
  42. -Wno-missing-include-dirs:忽略缺少包含目錄的警告。
  43. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  44. -Wno-vla:忽略變量長度數(shù)組的警告。
  45. -Wno-long-long:忽略 long long 類型使用的警告。
  46. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  47. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  48. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  49. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  50. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  51. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  52. -Wno-pointer-compare:忽略指針比較的警告。
  53. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  54. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  55. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  56. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  57. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  58. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  59. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  60. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  61. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  62. -Wno-vla:忽略變量長度數(shù)組的警告。
  63. -Wno-long-long:忽略 long long 類型使用的警告。
  64. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  65. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  66. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  67. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  68. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  69. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  70. -Wno-pointer-compare:忽略指針比較的警告。
  71. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  72. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  73. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  74. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  75. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  76. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  77. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  78. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  79. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  80. -Wno-vla:忽略變量長度數(shù)組的警告。
  81. -Wno-long-long:忽略 long long 類型使用的警告。
  82. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  83. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  84. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  85. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  86. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  87. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  88. -Wno-pointer-compare:忽略指針比較的警告。
  89. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  90. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  91. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  92. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  93. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  94. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  95. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  96. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  97. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  98. -Wno-vla:忽略變量長度數(shù)組的警告。
  99. -Wno-long-long:忽略 long long 類型使用的警告。
  100. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  101. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  102. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  103. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  104. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  105. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  106. -Wno-pointer-compare:忽略指針比較的警告。
  107. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  108. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  109. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  110. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  111. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  112. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  113. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  114. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  115. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  116. -Wno-vla:忽略變量長度數(shù)組的警告。
  117. -Wno-long-long:忽略 long long 類型使用的警告。
  118. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  119. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  120. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  121. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  122. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  123. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  124. -Wno-pointer-compare:忽略指針比較的警告。
  125. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  126. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  127. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  128. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  129. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  130. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  131. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  132. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  133. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  134. -Wno-vla:忽略變量長度數(shù)組的警告。
  135. -Wno-long-long:忽略 long long 類型使用的警告。
  136. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  137. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  138. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  139. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  140. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  141. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  142. -Wno-pointer-compare:忽略指針比較的警告。
  143. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  144. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  145. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  146. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  147. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  148. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  149. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  150. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  151. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  152. -Wno-vla:忽略變量長度數(shù)組的警告。
  153. -Wno-long-long:忽略 long long 類型使用的警告。
  154. -Wno-noexcept-type:忽略 noexcept 類型的警告。
  155. -Wno-noexcept-operator:忽略 noexcept 操作符的警告。
  156. -Wno-constexpr-not-const:忽略 constexpr 函數(shù)不是 const 的警告。
  157. -Wno-array-bounds:忽略數(shù)組越界訪問的警告。
  158. -Wno-pointer-to-int-cast:忽略指針到整數(shù)類型轉(zhuǎn)換的警告。
  159. -Wno-int-to-pointer-cast:忽略整數(shù)到指針類型轉(zhuǎn)換的警告。
  160. -Wno-pointer-compare:忽略指針比較的警告。
  161. -Wno-pointer-to-bool-cast:忽略指針到布爾類型轉(zhuǎn)換的警告。
  162. -Wno-bool-to-pointer-cast:忽略布爾到指針類型轉(zhuǎn)換的警告。
  163. -Wno-return-type-conversion:忽略返回類型轉(zhuǎn)換的警告。
  164. -Wno-argument-type-conversion:忽略參數(shù)類型轉(zhuǎn)換的警告。
  165. -Wno-float-conversion:忽略浮點(diǎn)類型轉(zhuǎn)換的警告。
  166. -Wno-complex-conversion:忽略復(fù)數(shù)類型轉(zhuǎn)換的警告。
  167. -Wno-cast-qual:忽略類型轉(zhuǎn)換中的限定符警告。
  168. -Wno-strict-aliasing:忽略嚴(yán)格別名警告。
  169. -Wno-non-virtual-dtor:忽略非虛析構(gòu)函數(shù)的警告。
  170. -Wno-vla:忽略變量長度數(shù)組的警告。
  171. -Wno-long-long:忽略 long long 類型使用的警告。
  172. -Wno-noexcept-type:忽略 `no

0