[C]gcc編譯器的一些常用語法


簡單的GCC語法:

如果你只有一個文件(或者只有幾個文件),那么就可以不寫Makefile文件(當然有Makefile更加方便),用gcc直接編譯就行了。在這里我們只介紹幾個我經常用的幾個參數,第一是 “-o”,它后面的參數表示要輸出的目標文件,再一個是 “-c”,表示僅編譯(Compile),不連接(Make),如果沒有”-c”參數,那么就表示連接,如下面的幾個命令:

gcc –c test.c,表示只編譯test.c文件,成功時輸出目標文件test.o

gcc –c test.c –o test.o ,與上一條命令完全相同,加入-o選項的意義在於你可以指定輸出二進制文件的名字

gcc –o test test.o,將編譯過的test.o連接成可執行的二進制文件test

gcc test.o -o test,與上一條命令相同

gcc –o test test.c,將test.c編譯並連接成可執行的二進制文件test

gcc test.c –o test,與上一條命令相同

gcc –c test1.c,只編譯test1.c,成功時輸出目標文件test1.o

gcc –c test2.c,只編譯test2.c,成功時輸出目標文件test2.o

gcc –c test1.c test2.c,將test1.v和test2.v編譯為test1.o和test2.o

gcc –o test test1.o test2.o,將test1.o和test2.o連接為可執行的二進制文件test

注:如果你想編譯cpp文件,那么請用g++,否則會有類似如下莫名其妙的錯誤:

cc3r3i2U.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0’......

還有一個參數是”-l”參數,與之緊緊相連的是表示連接時所要的鏈接庫,比如多線程,如果你使用了pthread_create函數,那么你就應該在編譯語句的最后加上”-lpthread”,”-l”表示連接,”pthread”表示要連接的庫,注意他們在這里要連在一起寫,還有比如你使用了光標庫curses,那么呢就應該在后面加上”-lcurses”,比如下面的寫法:

gcc –o test test1.o test2.o –lpthread –lcurses

當然gcc的參數我感覺有幾百個,不過我們平時在x86機器上用的就這么些,況且這里也不是GCC教程,所以,就此打住。

 

關於math.h頭文件的語

如果包含math.h頭文件,編譯時需要加上-lm參數,例如 gcc test1.c -lm -o test

關於pthread擴展

如果需要使用POSIX.1-2001中的pthread擴展,編譯時需要加上-lpthread參數,例如 gcc test1.c -lpthread -o test

關於C++

如果是C++,編譯時則需要加上-lstdc++,例如 gcc test1.cpp -lstdc++ -o test

 

關於文件后綴

如果是頭文件,命名為.h,如果是編譯單元,命名為.c。千萬不要把編譯單元命名為.h,gcc會視它為一個頭文件去編譯,當你想把它跟其他編譯單元鏈接起來的時候,就會報錯

xxx.xxx: file not recognized: File format not recognized

 

 

 

 

 附錄

gcc編譯選項


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM