寫在前面:gcc是“GNU Compiler Collection”的縮寫,從字面意思可以知道它是一個編譯器集,gcc不止可以編譯器c語言,還能用于c++,java,object-C等語言程式,但是在這里,我們的嵌入式學習中,目前只去關注gcc在C語言方面的編譯功能,
目錄
一.預處理
二. 編譯
三.匯編
四.鏈接
1.gcc的安裝(以Ubuntu為例) sudo apt-get install build-essential
安裝完后可以通過 gcc --version 查看版本,
讓我們在通過gcc編譯可執行檔案的程序中掌握其基礎應用,
準備: 先在當前目錄下 使用vim新建一個.c檔案 例如 666.c
$ vim 666.c
(vim的使用可在我的另一篇博客有詳細的敘述,這里不多在贅述)
插入一段代碼,
#include <stdio.h>
main()
{
int a,i;
a=6;
for(i=0;i<3;i++)
{
printf("%d",a);
}
}

(每次我們用 cat 查看)
一.預處理
1.預處理通過對宏定義(像#define)進行展開,對頭檔案(像 stdio.h)進行展開,對條件進行(像ifdef)編譯,展開所有宏,洗掉所有注釋(像"//").預處理cpp把源代碼,頭檔案預編成一個.i檔案,(注意這時并不檢查語法,所以即使有語法錯誤也不會報錯,)
2.命令:
$ gcc -E (源檔案名) -o (預處理檔案名)
或者:
$ gcc (源檔案名) > (預處理檔案名)
例如按666.c 來說,預處理時可以是 :
gcc -E 666.c -o 666.i
也可以是 gcc 666.c > 666.i

二. 編譯
1.編譯也就是檢查語法是否錯誤,將預處理過的檔案編譯成匯編檔案,
2.命令:
$ gcc -S (源檔案) -o (匯編檔案)
例如 gcc -S 666.i -o 666.s

三.匯編
1. 匯編也就是將匯編檔案生成目標檔案(二進制檔案)通過匯編,文本代碼變成了二進制代碼,(二進制代碼檔案以.o為后綴名),
2.命令:
$ gcc -c (匯編檔案) -o (目標檔案)
例如 gcc -c 666.s -o 666.o

(這時候因為是二進制檔案了,所以會亂碼)
四.鏈接
1. 鏈接找到依賴的庫檔案(靜態與動態),將目標檔案鏈接為可執行程式,
$ gcc -c [目標檔案] -o [可執行程式] -l[動態庫名]
假如沒有動態庫的話(一般)
直接
$ gcc -c [目標檔案] -o [可執行程式]
例如 gcc -c 666.o -o 666
此時會生成可執行程式 666
如果想執行使用該命令:
$ ./可執行程式
其中./是在當前目錄下的意思,
例如 ./666

(注意:在一般我們使用時 如果使用 gcc 可執行檔案名,會默認生成a.out 可執行檔案,這時我們直接執行它時用 ./a.out )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/401512.html
標籤:其他
下一篇:【筆記】計算機網路(二)
