簡單的GCC語法: 弄清gcc test.c 與 gcc -c test.c 的差別

簡單的GCC語法:

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

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

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

gcc –o test test.o,將test.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 –o test test1.o test2.o,將test1.o和test2.o連接爲可執行的二進制文件test

gcc –c test test1.c test2.c,將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教程,所以,就此打住。

發佈了12 篇原創文章 · 獲贊 21 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章