隨想錄(被低估的gcc g )

2021-09-02 07:36:27 字數 1452 閱讀 6682

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 能有乙個美好的未來。科學雖然給我們許多驚奇,但也攪壞了我們許多好夢。當登上了月球的那一刻,一切有關月的夢都被現實的蒼涼所破碎了。從那一步邁出起,廣寒宮破碎,輝夜姬亦未曾回到月上,阿爾忒彌斯丟失了金弓與駕月之車,一切有關月的神話於此失去光輝,人...