當前位置:編程學習大全網 - 編程語言 - 怎麽用gcc編譯文件?

怎麽用gcc編譯文件?

在終端中輸入 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
  • copyright 2024編程學習大全網