在終端中輸入 gcc 文件名 -o 目標文件名\x0d\然後 ./目標文件名 就行了,沒有目標文件名,自動存為 a\x0d\執行 ./a 就行了。\x0d\\x0d\在使用Gcc編譯器的時候,我們必須給出壹系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這裏只介紹其中最基本、最常用的參數。\x0d\ GCC最基本的用法是∶gcc [options] [filenames]\x0d\ 其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。\x0d\ -c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。\x0d\ -o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。\x0d\ -g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。\x0d\ -O,對程序進行優化編譯、連接,采用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢壹些。\x0d\ -O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢。\x0d\ -Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。C程序中的頭文件包含兩種情況∶\x0d\ A)#include \x0d\ B)#include “myinc.h”\x0d\ 其中,A類使用尖括號(),B類使用雙引號(“ ”)。對於A類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件,而B類,預處理程序在目標文件的文件夾內搜索相應文件。 \x0d\\x0d\GCC執行過程示例\x0d\\x0d\ 示例代碼 a.c:\x0d\ #include \x0d\ int main()\x0d\ {\x0d\ printf("hello\n");\x0d\ }\x0d\ 預編譯過程:\x0d\ 這個過程處理宏定義和include,並做語法檢查。\x0d\ 可以看到預編譯後,代碼從5行擴展到了910行。\x0d\ gcc -E a.c -o a.i\x0d\ cat a.c | wc -l\x0d\ 5\x0d\ cat a.i | wc -l\x0d\ 910\x0d\ 編譯過程:\x0d\ 這個階段,生成匯編代碼。\x0d\ gcc -S a.i -o a.s\x0d\ cat a.s | wc -l\x0d\ 59\x0d\ 匯編過程:\x0d\ 這個階段,生成目標代碼。\x0d\ 此過程生成ELF格式的目標代碼。\x0d\ gcc -c a.s -o a.o\x0d\ file a.o\x0d\ a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped\x0d\ 鏈接過程:\x0d\ 鏈接過程。生成可執行代碼。鏈接分為兩種,壹種是靜態鏈接,另外壹種是動態鏈接。使用靜態鏈接的好處是,依賴的動態鏈接庫較少,對動態鏈接庫的版本不會很敏感,具有較好的兼容性;缺點是生成的程序比較大。使用動態鏈接的好處是,生成的程序比較小,占用較少的內存。\x0d\ gcc a.o -o a\x0d\ 程序運行:\x0d\ ./a\x0d\ hello\x0d\編輯本段\x0d\GCC編譯簡單例子\x0d\\x0d\ 編寫如下代碼:\x0d\ #include \x0d\ int main()\x0d\ {\x0d\ printf("hello,world!\n");\x0d\ }\x0d\ 執行情況如下:\x0d\ gcc -E hello.c -o hello.i\x0d\ gcc -S hello.i -o hello.s\x0d\ gcc -c hello.s -o hello.o\x0d\ gcc hello.c -o hello\x0d\ ./hello\x0d\ hello,world!
上一篇:Java就業前景怎麽樣?下一篇:華中數控極坐標編程ppt