Linux學習(C語言學習之Gcc)
Linux的學習需要對C語言有一個透徹性的瞭解,需要有非常好的C語言基礎,Gcc是Linux中的C檔案的一個編譯器(當然也不只侷限於C檔案)。 Gcc最初的全名是GNU C Compiler 隨著Gcc支援的語言越來越多,它的名稱變成了GNU Compiler Collection 它相當於在Linux當中的對.c檔案的一個翻譯者,將我們的.c檔案翻譯成計算機可以理解的語言。 對於Gcc而言在使用的時候要特別的注意檔案的字尾名 比如.c , .cpp等 在使用Gcc編譯我們寫的.c檔案的時候一定要注意語句的格式: gcc -o(output有輸出的意思) gcc -o 輸出的檔名 輸入的檔名 gcc -v -o;可以檢視Gcc呼叫了哪些東西。
gcc -S -o 輸出檔名稱(.s) 輸入檔名稱(.c)(編譯命令生成.s檔案) gcc -c -o 輸出檔名稱(.o) 輸入檔名稱(.s) (彙編命令由.s檔案生成.o檔案);可以完成編譯、彙編兩個內容 gcc -o 輸出檔名稱 輸入檔名稱(完成連線) 可以完成編譯、彙編、連線三個內容 vi 檔案的名稱(檢視檔案內容,也可以編輯檔案) gcc -E -o 輸出檔名稱(.i) 輸入檔案嗎名稱(.c) 巨集定義預處理命令 gcc中常見的預處理錯誤: #include “name” 從當前目錄下尋找 #include 從系統下尋找 最常見的錯誤是:not find 解決問題的命令: gcc -I跟查詢標頭檔案的目錄 編譯錯誤: 語法錯誤 ;(忘寫) 連線錯誤: 錯誤原因:原材料不夠 undefined reference to ‘函式名’,沒有定義此函式 原材料多了 multiple definition of ‘函式名’,重複定義此函式 多個c檔案的打包方法: gcc -o 輸出檔名 第一個.c檔案 第二個.c檔案…(不建議使用此方法) 建議使用的方法: gcc -c -o 輸出檔名稱(.o) 第一個輸入檔名稱(.s) gcc -c -o 輸出檔名稱(.o) 第二個個輸入檔名稱(.s) gcc -o 輸出檔名稱 第一個.o檔案 第二個.p檔案 預處理的使用
__FUNCTION__ 指函式名
__LINE__ 指行號(本條語句的行號)
__FILE__ 指檔名
系統定義的巨集 條件預處理: #ifdef #else #endif 在以上的程式碼段中:#ifdef ABC 的意思是如果定義了ABC就執行下一條語句,這樣就可以在除錯與使用者兩個版本之間切換。 gcc -D 比如 gcc -DABC1 相當於#define ABC1 #字串化 #define ABC(x) #x ##連線符號 #define DAY(x) day##x