Linux下的編譯器gcc的使用

2021-09-25 21:19:16 字數 1132 閱讀 2232

首先了解編譯器在對**編譯的時候有以下的階段

1.預處理(進行巨集替換)

2. 編譯(生成彙編)

3. 彙編(生成機器可識別**,也就是編譯成目標檔案)

4. 連線(生成可執行檔案或庫檔案)

假設我寫了乙個test.c檔案,示例:

第一階段:gcc -e test.c -o test.i

第二階段:gcc -s test.i –o test.s

第三階段:gcc –c test.s –o test.o

第四階段:gcc test.o –o test (鏈結目標檔案,生成可執行檔案test)

或者可以一條命令從.c檔案生成可執行檔案gcc test.c -o test

那麼linux下的編譯器gcc如何完成

格式 :gcc [選項] 要編譯的檔案 [選項] [目標檔案]

接著介紹部分的gcc選項:

gcc選項

選項的作用

-e只做預處理

-s編譯到組合語言,不進行彙編和鏈結

-c編譯到目標**

-o就是生成目標檔案

-g生成除錯資訊

-o0 -o1 -o2 -o3

編譯器的優化選項的4個級別,-o0表示沒有優化,-o3優化級別最高

-w不生成任何警告資訊

-wall

生成所有警告資訊

-static

此選項對生成的檔案採用靜態鏈結

-shared

此選項將盡量使用動態庫,所以生成檔案比較小,但是需要系統由動態庫.

最後稍稍提一哈動靜態庫:

靜態庫是指編譯鏈結時,把庫檔案的**全部加入到可執行檔案中,因此生成的檔案比較大,但在執行時就不依靠庫。如果以後庫出現異常,並不會影響到可執行檔案,靜態庫的字尾名一般為「.a」動態庫與之相反,在編譯鏈結時並沒有把庫檔案的**加入到可執行檔案中,而是在程式執行時由執行時鏈結檔案載入庫,這樣可以節省系統的開銷(大大的節省了空間)。但是,這個動態庫如果出現異常,則使用了動態庫的可執行檔案就會受到影響。動態庫一般字尾名為「.so。gcc 在編譯時預設使用動態庫。

Linux下GCC編譯器的安裝

檢視gcc版本 ubuntu下檢視gcc的版本非常簡單,直接在終端上輸入gcc v 或者 gcc version,就會顯示版本資訊了,而且它配置的編譯指令碼引數也可看到,如下圖所示 cd opt wget 2 解壓 tar xvf gcc 5.3.0.tar.gz 3 建立安裝目錄 mkdir us...

Linux下gcc編譯器和g 編譯器的那些事兒

使用c c 程式設計大約有三四個年頭了。最開始涉及到微控制器 嵌入式linux等,都使用的是c語言,那時主要寫linux驅動,甚至在arm板上寫linux應用程式時需要應用物件導向的思想的時候,都是使用c語言的結構體和函式指標來實現。當然,使用的編譯器自然就是gcc了。後來,慢慢的轉向了使用c 編寫...

Linux編譯器GCC的使用

編譯流程的四個步驟 預處理編譯 彙編鏈結 hello.c 預處理 hello.i 編譯 hello.s 彙編 hello.o 鏈結 hello gcc編譯流程 gcc optio filename option e 可以使編譯器在預處理結束時就停止編譯。o 指的是目標檔案。s 可以使編譯器完成編譯時...