Linux編譯器GCC的使用

2021-10-06 15:52:32 字數 1161 閱讀 5750

編譯流程的四個步驟

預處理編譯

彙編鏈結

hello.c 預處理—> hello.i 編譯—> hello.s 彙編—> hello.o 鏈結—> hello

gcc編譯流程

gcc [optio | filename]

option:

-e:可以使編譯器在預處理結束時就停止編譯。

-o:指的是目標檔案。

-s:可以使編譯器完成編譯時就停止。

-c:彙編階段

gcc -e -o a.i a.c(預處理)

gcc -s -o a.s a.i(編譯)

gcc -c a.s -o a.o(彙編)

gcc a.o -o a(鏈結)

gcc警告提示

主要分為兩類:-wall類警告、非-wall類警告

-wall類警告:主要如下

-wall:開啟所有型別語法警告

非-wall類警告:主要兩個如下

-ansi:該選項強制gcc生成標準語法要求的警告資訊。

-pedantic:該選項允許發出ansi c標準所列出的全部警告資訊。

gcc使用函式庫

linux中函式庫包括兩類:靜態庫和共享庫

靜態庫的**在編譯時就已經連線到開發人員開發的應用程式中(字尾名.a),而共享庫是在程式開始執行時被載入(字尾名.so和版本號)。

加路徑:

-i《目錄》:在標頭檔案的搜尋列表中新增***目錄,這樣,gcc就會到指定的目錄去查詢相應的標頭檔案。(eg:gcc hello.c -i/root/workplace/gcc/ -o hello)路徑名中不包括檔名

在include語句中,<>表示在標準路徑中搜尋標頭檔案,在linux中預設為/usr/include,

-l《目錄》:用於指明庫檔案的路徑。假如程式需要用到目錄/root/workplace/gcc/lib(eg:gcc hello.c -l/root/workplace/gcc/lib -lsunq -o hello)路徑名中不包括檔名。

使用不同鏈結庫,庫名相同的靜態庫檔案和共享庫檔案,鏈結時呼叫共享庫,linux預設採用非動態鏈結的方式。(-l小寫的l)

-static -l:連線同名靜態庫。

GCC編譯器的使用

看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...

GCC編譯器的使用

看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...

GCC編譯器的使用

看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...