Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

GCC 編譯參數完整指南:從預處理到鏈接的四階段與常用選項詳解

編輯:Linux 教學

編譯四階段

  1. 預處理:展開宏、包含頭文件、條件編譯 → 生成 .i 文件
  2. 編譯:預處理文件 → 匯編語言 .s
  3. 匯編:匯編語言 → 目標機器碼 .o
  4. 鏈接:目標文件 + 庫 → 可執行程序

控制編譯流程的參數

參數作用輸出
-E僅預處理標準輸出(重定向到 .i)
-S預處理 + 編譯,產生匯編.s 文件
-c預處理 + 編譯 + 匯編,不鏈接.o 目標文件
-o file指定輸出文件名自定義

示例:

gcc -E hello.c > hello.i
gcc -S hello.c          # 生成 hello.s
gcc -c hello.c          # 生成 hello.o
gcc -o hello hello.c    # 直接生成可執行文件 hello

常用優化與標準控制參數

參數說明
-Wall開啟所有常見警告(強烈推薦)
-O2優化等級 2(速度/大小平衡,發布標配)
-O3激進優化,可能增大體積
-ansi嚴格 ANSI C 模式,禁用 GNU 擴展
-std=c99 / -std=c11指定 C 標準版本
-fno-asm禁用 asm、inline、typeof 關鍵字
-fno-strict-prototypeC++:無參函數視為無顯式參數聲明(而非無參)

宏定義與頭文件搜索路徑

  • -D MACRO:相當於 #define MACRO
  • -D MACRO=VALUE:相當於 #define MACRO VALUE
  • -U MACRO:取消宏定義
  • -I dir:添加頭文件搜索目錄(優先於系統目錄)
  • -include file:強制包含文件(如預編譯頭)
  • -imacros file:展開文件中的宏定義,但不包含文件內容

字符類型控制

  • -funsigned-char / -fsigned-char:指定 char 默認符號性(實現定義)
Copyright © Windows教程網 All Rights Reserved