寫這系列文章是以為我要看看gcc的原始碼,但是還有很多問題,如:yacc的使用,rtl等。希望對此有興趣的同道中人多多指教。
gcc是目前使用最廣泛的免費的編譯器之一,最近想看看gcc的原始碼,學習一下編譯的技術。也希望對此有興趣的同道中人能多多指教。
要學習乙個軟體的源**,最好是首先學習一下這個軟體的使用,所以在這裡就簡單的學習一下gcc的使用。
gcc是乙個基於命令列的軟體,所以要使用gcc,就應該學習它的命令選項。下面做乙個簡單的介紹,具體的還應該好好實踐,要不學多少都會忘j:
1. 全域性選項,這可能是最常用的選項。gcc的編譯過程分為四個階段:預處理,編譯,彙編,連線。gcc的選項可以分別進行這四個階段,全域性的選項就主要是控制這幾個階段的
-e:預處理之後停止
-c:彙編之後停止,產生obj檔案,不進行連線。
-s:編譯之後停止,產生.s檔案,不進行彙編
-o:指定輸出的檔名
-xlanguage:指定編譯的語言,而不是靠檔案字尾來判斷
-x none:不指定編譯的語言,用檔名字尾來判斷進行處理,這樣可以從某個階段開始
2.警告選項,這類選項可以控制gcc編譯過程中產生什麼級別的警告資訊
-fsyntax-only:僅檢查**的語法錯誤
-w:機制所有的警告資訊
-wunused:對所有未使用的變數產生警告
3.除錯選項,這類選項控制產生的檔案,以供除錯軟體使用。注意,不使用這類選項,就不能用偵錯程式除錯產生的檔案。
-g:這是最常用的選項(我常用j),產生的檔案可以被gdb使用
-p:為分析程式prof產生附加的**
4.優化選項,這類選項可以對**進行優化-o
-o0
-o1
-o2:這些都是優化級別
-fno-inline:忽略inline關鍵字
5.預編譯選項,用來指定預編譯時的選項。
這個我沒有用過,呵呵,我還是很少程式設計的,所以也沒有用過這些選項。大家自己看看吧。
暫時就這些吧,其它的我也不會了,慢慢學吧,我覺得能明白編譯的幾個階段對學習源**很重要,其它的再慢慢理解吧。要學習命令就看看它的手冊吧。
python學習系列之一
python是一種容易學習而又功能強大的程式語言,是一種object oriented programming.python優雅的語法及dynamic typing,及intepretion本質。python是一種高階語言,還可以把程式切成小模組。python中也有內建的模組可以提供許多功能如fil...
Stanford機器學習系列之一 機器學習基本概念
機器學習 arthur samuel,1959 在確定程式設計之外給予計算機學習能力的研究領域。機器學習 tom mitchell,1998 如果電腦程式對於任務t的效能度量p通過經驗e得到了提高,則認為此程式對e進行了學習。監督學習 包括回歸 連續性問題 值或目標變數是連續的 分類 離散性問題 值...
USB學習系列之一 USB簡介
1.usb universal serial bus 通用序列匯流排 2.即插即用pnp plug and play。3.usb是主從模式結構,usb通訊中分為usb主裝置和usb從裝置,主裝置和主裝置,從裝置和從裝置之間不能互連。4.usb otg on the go 正在執行中 同乙個裝置,在不...