GCC常用參數
介紹:
作為自由軟件的旗艦項目,Richard Stallman 在十多年前剛開始寫作 GCC 的時候,還只是把它當作僅僅一個C 程序語言的編譯器;GCC 的意思也只是 GNU C Compiler 而已。經過了這么多年的發展,GCC 已經不僅僅能支持 C 語言;它現在還支持 Ada 語言,C++ 語言,Java 語言,Objective C 語言,Pascal 語言,COBOL 語言,以及支持函數式編程和邏輯編程的 Mercury 語言,等等。而 GCC 也不再單只是 GNU C 語言編譯器的意思了,而是變成了 GNU Compiler Collection 也即是 GNU 編譯器家族的意思了另一方面,說到 GCC 對于各種硬件平臺的支持,概括起來就是一句話:無所不在。幾乎所有有點實際用途的硬件平臺,甚至包括有些不那么有實際用途的硬件平臺,比如 Don Knuth 設計的 MMIX 計算機,GCC 都提供了完善的支持。
如果把我們自己的程序語言的實現建立于 GCC 之上,也立刻使得我們的程序語言的實現版本可以運行在幾乎所有有用的硬件平臺之上。這對于程序語言的作者來說,也是一個確實的有極大誘惑力的好處。 GCC常用選項
選項
含義
--help
--target-help
顯示 gcc 幫助說明。‘target-help’是顯示目標機器特定的命令行選項。
--version
顯示 gcc 版本號和版權信息 。
-o outfile
輸出到指定的文件。
-x language
指明使用的編程語言。允許的語言包括:c c++ assembler none 。 ‘none’意味著恢復默認行為,即根據文件的擴展名猜測源文件的語言。
-v
打印較多信息,顯示編譯器調用的程序。
-###
與 -v 類似,但選項被引號括住,并且不執行命令。
-E
僅作預處理(code.i),不進行編譯、匯編和鏈接。
-S
僅編譯到匯編語言(code.s),不進行匯編和鏈接。
-c
編譯、匯編到目標代碼(code.o),不進行鏈接。
-pipe
使用管道代替臨時文件。
-combine
將多個源文件一次性傳遞給匯編器。
其他GCC選項
更多有用的GCC選項:
命令
描述
-static 禁止使用共享連接。
-l library
-llibrary
進行鏈接時搜索名為library的庫。
例子: $ gcc test.c -lm -o test
-Idir
把dir 加入到搜索頭文件的路徑列表中。
例子: $ gcc test.c -I../inc_dir -o test
-Ldir
把dir 加入到搜索庫文件的路徑列表中。
例子: $ gcc -I/home/foo -L/home/foo -ltest test.c -o test
-Dname
預定義一個名為name 的宏,值為1。
例子: $ gcc -DTEST_CONFIG test.c -o test
-Dname =definition
預定義名為name ,值為definition 的宏。
-ggdb
-ggdblevel
為調試器 gdb 生成調試信息。level 可以為1,2,3,默認值為2。
-g
-glevel
生成操作系統本地格式的調試信息。-g 和 -ggdb 并不太相同, -g 會生成 gdb 之外的信息。level 取值同上。
會打開一些很有用的警告選項,建議編譯時加此選項。
-w禁止顯示所有警告信息。
Optimization
-O0
禁止編譯器進行優化。默認為此項。
-O
-O1
嘗試優化編譯時間和可執行文件大小。
-O2
更多的優化,會嘗試幾乎全部的優化功能,但不會進行“空間換時間”的優化方法。
-O3
在 -O2 的基礎上再打開一些優化選項:-finline-functions, -funswitch-loops 和 -fgcse-after-reload 。
-ansi
支持符合ANSI標準的C程序。這樣就會關閉GNU C中某些不兼容ANSI C的特性。
-std=c89
-iso9899:1990
指明使用標準 ISO C90 作為標準來編譯程序。
-std=c99
-std=iso9899:1999
指明使用標準 ISO C99 作為標準來編譯程序。