GCC編譯鏈結多檔案

2021-08-08 17:15:37 字數 1797 閱讀 5071

gcc是linux/unix上非常強大的c語言編譯器。並且如今也支援c++的編譯。與vc不同,gcc是完全跨平台的。到目前為止很多任務具都使用gcc作為其編譯環境,比如cocos2d-x,android的ndk等等。 學習使用gcc編譯器,就是學習它眾多的編譯引數。就是用連字元-連線的引數.

因為它的引數並不全是單字元的,所以不能使用乙個連字元後加多個引數的寫法, 要每個引數前面都要加乙個連字元.

直接在gcc後面加上要編譯的c語言原始檔

gcc hello.c

這種預設的情況下會生成乙個名為a.out的可執行檔案。

-o 最常用的編譯選項,用於指定要生成的可執行檔案的名稱。

gcc -o hello hello.c

需要體會的一點是:gcc對於引數的位置無要求!比如也可以寫作

gcc hello.c -o hello

惟一要注意的就是-o後面一定要緊跟要生成的可執行檔名。

-g 用於給生成的可執行檔案加上除錯資訊,只有這樣才可使用gdb除錯。

gcc -g -o hello hello.c

同樣引數-g的也可寫在hello.c後面。

-d選項

參考如下**great.c

#include 

int main(int argc, char *argv)

如果我想要讓程式列印test,測試該分支運**況可以用如下命令:

gcc -dmydebug -g -o great great.c

./great

如果直接

gcc -o great great.c

./great

程式執行結果:

通過使用—d選項可以測試程式分支的正確與否,驗證程式的邏輯正確性.

選項 -e

gcc -e test.c -o test.i 將test.c預處理輸出test.i檔案。

選項 -s

gcc -s test.i 將預處理輸出檔案test.i彙編成test.s檔案。

選項 -c

gcc -c test.s 將彙編輸出檔案test.s編譯輸出test.o檔案。

1.多個檔案一起編譯

用法:gcc a.c b.c c.c d.c -o main

作用:將多個.c檔案編譯後鏈結成可執行檔案 ./main執行

2.單獨編譯各個原始檔,然後對編譯後的.o檔案進行鏈結

gcc -c a.c //生成a.o

gcc -c b.c //生成b.o

gcc -c c.c //生成d.o

gcc -c d.c //生成d.o

例子:

display.c

#include 

void display(const

char *str)

main.c

#include 

extern func();

int main()

關於在main.c中extern func()是告訴編譯器func()宣告在別的檔案,如果不加這一行的話會有如下告警:

main.c:5:5: warning: implicit declaration of function 『display』 [-wimplicit-function-declaration]

使用c99標準編譯 預設的情況下,編譯器是以c89的標準編譯的。使用c99則:

gcc -std=c99 hello.c

gcc編譯鏈結多檔案

方法一直接編譯 gcc file1.c file2.c file3.c main.c o out 前提是main.c要include其他檔案的標頭檔案,來避免main檔案中沒有宣告就使用沒定義的函式導致的報錯,如果要寫的挫點,也可以不include標頭檔案,而在main檔案裡手寫那幾個宣告。方法二把...

gcc 編譯 鏈結原理

使用 ld linux.so.作為直譯器,是寫在二進位制檔案中的,比如上面編譯好的 demo 中。另外的,2 其它庫的查詢和載入,則是 ld linux.so.完成的。ldd 可執行檔名 檢視可執行檔案鏈結了哪些 系統動態鏈結庫 strip 可執行檔名 去除符號表可以給可執行檔案 ldconfig ...

gcc 多原始檔的編譯方法

如果有多個原始檔,基本上有兩種編譯方法 假設有兩個原始檔為test.c和testfun.c 1.多個檔案一起編譯 用法 gcc testfun.c test.c o test 作用 將testfun.c和test.c分別編譯後鏈結成test可執行檔案。2.分別編譯各個原始檔,之後對編譯後輸出的目標檔...