轉載於:http://cache.baiducontent.com/c?m=9d78d513d99610fe4fede5690d60c067690597634dc0d06368d5e31587231b1f483ca5fd65351177ced82c395cfa5e5c9da177246b1420c0c79fce579be6cd7b69d5736a3b01d501548848f19c5b739666c301b7ee04e3b8f13592aad3&p=8b2a975ecad011a05bec963c13008c&newp=87759a46d7c11ce006bfc7710f40c4231610db2151d7d7126b82c825d7331b001c3bbfb423241403d7c17a6603a8425ae8f13d78350923a3dda5c91d9fb4c57479d5686a22&user=baidu&fm=sc&query=gcc+%2Dc+%2Do&qid=a985988600009e55&p1=2
簡單的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教程,所以,就此打住。
