2021-05-12 14:32:11
Linux 編譯器之 GCC
上一節我們學習了 Vim 編輯器,接下來我們一起學習 gcc 編譯器,這裡,我們要區分編輯器和編譯器有何不同?
編輯器是指我用它來寫程式的(編輯程式碼),而我們寫的程式碼語句,電腦是不懂的,我們需要把它轉成電腦能懂的語句,編譯器就是這樣的轉化工具。就是說,我們用編輯器編寫程式,由編譯器編譯後才可以執行!
編譯器是將易於編寫、閱讀和維護的高階計算機語言翻譯為計算機能解讀、執行的低階機器語言的程式。
GCC(GNU Compiler Collection,GNU 編譯器套件),是由 GNU 開發的程式語言編譯器。GCC 原本作為GNU作業系統的官方編譯器,現已被大多數類Unix作業系統(如 Linux、BSD、Mac OS X 等)採納為標準的編譯器,GCC 同樣適用於微軟的 Windows。
GCC 最初用於編譯 C 語言,隨著專案的發展 GCC 已經成為了能夠編譯 C、C++、Java、Ada、fortran、Object C、Object C++、Go 語言的編譯器大家族。
這裡只是簡單介紹如何編譯 C 程式或者 C++ 程式最終成為一個可執行程式。
使用的例子程式碼下載。
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
使用者名稱與密碼都是www.linuxidc.com
具體下載目錄在 /2015年資料/4月/7日/Linux 編譯器之 GCC/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
gcc識別的副檔名如下:
.c C 語言檔案
.i 預處理後的 C 語言檔案
.C、.cc、.cp、.cpp、.c++、.cxx C++語言檔案
.ii 預處理後的 C++ 語言檔案
.S 組合檔案(使用者自己新建的組合檔案)
.s 預處理後的組合檔案
.o 編譯後的目標檔案
.a 目標檔案的靜態連結庫(連結時使用)
.so 目標檔案的動態連結庫(連結、執行時使用)
gcc 和 g++ 編譯器的編譯過程
1、預處理
2、編譯
3、組合
4、連結
gcc 常用編譯應用範例
分步編譯:
1)gcc -E hello.c -o hello.i
2)gcc -S hello.i -o hello.s
3)gcc -c hello.s -o hello.o
4)gcc hello.o -o hello_elf
編譯選項說明:
-o file指定生成的輸出檔名為 file
-E只進行預處理
-S只進行預處理和編譯
-c只進行預處理、編譯和組合
檔名字尾說明:
.c C 語言檔案
.i 預處理後的 C 語言檔案
.s 預處理後的組合檔案
.o 編譯後的目標檔案
程式編譯成功後,通過“./”執行這個可執行程式。
常用編譯(還是經過:預處理、編譯、組合、連結的過程):
gcc hello.c -o demo
如果是 C++ 程式碼,只需改用 g++ 編譯器即可。
如果沒有 g++ 編譯器,線上安裝即可:
使用 g++ 編譯 c++ 程式:
gcc、g++ 編譯的其它一些選項
-v 顯示製作gcc工具時的設定命令,顯示前處理器、編譯器的版本號
-Wall 生成所有級別的警告資訊
-w 關閉所有警告,建議不使用此選項
-Idir 將dir目錄加入標頭檔案搜尋目錄列表,優先在dir目錄中查詢包含的標頭檔案
-Ldir 將dir目錄加入庫檔案目錄列表,優先在dir目錄中查詢庫檔案
-lname 連結庫為name的庫
-static 連結時使用靜態庫
-shared 編譯動態庫
Linux升級GCC 4.8.1清晰簡明教學(Ubuntu 12.04 64位元版為例) http://www.linuxidc.com/Linux/2014-04/99583.htm
在CentOS 6.4中編譯安裝GCC 4.8.1 + GDB 7.6.1 + Eclipse 在CentOS 6.4中編譯安裝GCC 4.8.1 + GDB 7.6.1 + Eclipse
Ubuntu下Vim+GCC+GDB安裝及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm
Ubuntu下兩個GCC版本切換 http://www.linuxidc.com/Linux/2012-10/72284.htm
CentOS6.5升級手動安裝GCC4.8.2 http://www.linuxidc.com/Linux/2015-01/112595.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-04/115917.htm
相關文章