1、-c
編譯c檔案
2、-o
生成目標檔案
3、-s
將c檔案生成彙編檔案
4、-include
包含特定標頭檔案
5、-i(大寫的i)
指明頭檔案目錄
6、-l(小寫的l)
指明具體的動態庫名稱
7、-l
指明動態庫目錄
8、-d
新增預設macro定義
9、-static
強制生成乙個exe檔案,不依賴動態庫,除錯動態庫問題時非常有效
10、-shared -fpic
生成動態庫
11、-g
生成除錯資訊
12、-werror
將warning看成是error,**靜態檢查的時候非常有效
13、-o1, -o2, -o3
基於速度的優化
14、-os
基於大小的優化
15、-mm
獲取當前檔案依賴的標頭檔案,編寫makefile的時候非常有效
16、-e
完成檔案預處理,此選項可以完成macro的翻譯
17、-fprofile-arcs -ftest-coverage
在每一行**後生成統計資訊,用於gcov,主要分析**覆蓋率等
18、-pg
在乙個函式的入口和出口新增額外**,用於gprof,主要分析**效能,kernel中ftrace的靜態分析也是這個原理
19、-t
確認lds連線指令碼
20、-nostartfiles -nostdlib
沒有起始檔案,沒有標準庫,此選項主要用於firmware的編譯,不依賴於os
21、-m32, -m64
生成32位程式,生成64位程式
22、-std=c99
確定c或者cpp語言支援的語法標準
23、-v
顯示編譯全過程
24、-fstack-check,-fstack-protector,-fstack-protector-all
新增堆疊檢測**
25、--help
顯示幫助資訊,如果實在記不得了,就用用這個選項好了
ps:a、編譯交叉編譯器的時候,gcc被編譯了兩次,一次的編譯選項比較簡單,主要用來支援編譯glibc,所以一些編譯選項都是禁止的,比如--disable-threads, --disable-decimal-float,--disable-shared,這些都是需要glibc支援的,但是我們glibc還沒有編譯好,所以不能放開。另外一次複雜一點,主要支援c、c++、posix等多項功能,編譯選項更複雜,既然glibc已經編譯好了,那麼之前禁止的編譯選項都可以放開了。但是第一次生成的gcc是不可能編譯gcc**的,因為是交叉編譯器,所以無法用來編譯在主機上執行的gcc。兩次的選用的編譯器都是主機編譯器。
b、關於編譯gcc的部分,可以參考這個鏈結,主要是製作交叉編譯工具。
軟體隨想錄
最近閱讀了由阮一峰翻譯的,有程式設計師部落酋長之稱的 joel 撰寫的 軟體隨想錄 精華摘抄如下 就如同所有行業最好的人才一樣,那些優秀的程式設計師是不會出現在招聘市場的。通常優秀的程式設計師在整個職業生涯中,可能會有4次求職。實習生制度創造了輸送優秀人才的管道,但是這個管道比較長,而且一路上損耗很...
專案隨想錄
發現自己不怎麼會起題目了。中午回去還沒走到寢室,就接到劉老師的 說要把程式調通,於是中午吃完飯立馬跑回去,把顯示問題解決了。其實那個無效數字問題是因為在hql語句中使用了cast pw as integer 將字串轉成integer型,可是資料庫中的內容程式設計了字母加數字,自然會轉換失敗了,唉,真...
雜文 隨想錄
這裡是一些隨想。關於名為二氫婦女的使用者本人,希望 ta 能有乙個美好的未來。科學雖然給我們許多驚奇,但也攪壞了我們許多好夢。當登上了月球的那一刻,一切有關月的夢都被現實的蒼涼所破碎了。從那一步邁出起,廣寒宮破碎,輝夜姬亦未曾回到月上,阿爾忒彌斯丟失了金弓與駕月之車,一切有關月的神話於此失去光輝,人...