首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

GCC 編譯器命令詳解:從入門到進階實戰

     編輯:關於C語言

GCC (GNU Compiler Collection) 是 Linux 系統下最核心的編譯工具鏈,支援 C、C++、Objective-C 等語言。掌握 GCC 常用選項對提升開發效率至關重要。

快速上手:Hello World

// hello.c
#include <stdio.h>
int main(void) {
    printf("Hello World!\n");
    return 0;
}

編譯執行:

gcc -o hello hello.c
./hello

核心選項詳細說明

選項功能範例
-o <file> 指定輸出檔案名稱。預設為 a.out。 gcc -o myapp main.c
-c 僅編譯至目標檔 (.o),不連結。適合多檔案專案分開編譯。 gcc -c util.c
gcc -o app main.o util.o
-I<dir> 加入頭檔搜尋路徑。 gcc -I./include main.c
-L<dir> 加入函式庫搜尋路徑。 gcc -L./lib main.c
-l<name> 連結指定函式庫 (libname.so/a)。 gcc -lm main.c (連結 libm 數學庫)
-O<level> 優化等級:0(無)、1、2、3、s(體積)、fast(激進)。 gcc -O2 main.c
-Wall -Wextra 開啟常見警告,強烈建議永遠加上。 gcc -Wall -Wextra main.c
-g 產生除錯資訊,供 GDB 使用。 gcc -g main.c
-std=<standard> 指定語言標準:c99, c11, c17, c++11, c++17 等。 gcc -std=c11 main.c
-D<macro> 定義前置處理器巨集。 gcc -DDEBUG=1 main.c
-E / -S 僅預處理 (-E) 或產生組語 (-S),不組譯連結。 gcc -E main.c > main.i

C++ 專案建議使用 g++

gcc 雖能編譯 .cpp 檔,但不會自動連結 C++ 標準庫。請直接使用 g++,它會自動處理:

g++ -o app main.cpp -std=c++17

多檔案專案實戰流程

# 1. 分別編譯為目標檔
gcc -c -Wall -O2 -Iinclude src/main.c -o build/main.o
gcc -c -Wall -O2 -Iinclude src/utils.c -o build/utils.o

# 2. 連結生成執行檔
gcc build/main.o build/utils.o -Llib -lmylib -o bin/app

常見問題排查

  • undefined reference:漏連結函式庫 (-l) 或路徑錯誤 (-L)。
  • fatal error: xxx.h: No such file:漏加頭檔路徑 (-I)。
  • 編譯通過但執行錯誤:加上 -g 並用 GDB 除錯;檢查 -Wall 警告。

延伸工具

  • Makefile / CMake:自動化建構大型專案。
  • pkg-config:自動獲取函式庫編譯連結參數 (如 `pkg-config --cflags --libs gtk+-3.0`)。
  • Clang:GCC 相容、錯誤訊息更友善的替代編譯器。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved