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

Linux 下使用 GCC 編譯 C 程式完整教學

     編輯:關於C

GCC 編譯四階段流程

GCC 完整編譯流程包含四個階段,理解這有助於排錯與優化:

  1. 預處理:處理 #include、#define、條件編譯,產生 .i 檔。
  2. 編譯:將預處理後的 C 碼轉為組合語言 .s 檔。
  3. 組譯:將組合語言轉為機器碼目標檔 .o。
  4. 連結:將多個 .o 及函式庫合併為最終執行檔。

對應指令:

gcc -E hello.c -o hello.i   # 僅預處理
gcc -S hello.i -o hello.s     # 僅編譯至組語
gcc -c hello.s -o hello.o     # 僅組譯
gcc hello.o -o hello          # 僅連結

實戰:從原始碼到執行檔

以下在 Ubuntu 終端機逐步操作:

cd ~                # 進入家目錄
mkdir GCC_Demo && cd GCC_Demo
vim hello.c         # 編輯原始碼

hello.c 內容:

#include 
int main(void) {
    printf("Hello, GCC World!\n");
    return 0;
}

編譯並執行:

gcc hello.c -o hello   # 一鍵完成四階段,產生 hello 執行檔
./hello                # 執行,輸出 Hello, GCC World!

常用編譯參數速查

參數說明
-Wall開啟所有常見警告(強烈建議常開)
-O2啟用 O2 最佳化,平衡速度與大小
-g嵌入除錯資訊,供 GDB 使用
-std=c11指定 C 標準(c99/c11/c17)
-I/path加入標頭檔搜尋路徑
-L/path -llib加入函式庫搜尋路徑與連結庫

Linux 執行檔權限機制

Windows 靠副檔名 .exe 判斷可執行;Linux 則看檔案權限位:

ls -l hello
# -rwxr-xr-x 1 user user 16K Jan 1 12:00 hello
#   ^^^  擁有者有 x (execute) 權限即可執行

若無執行權限,可用 chmod +x hello 增加。

多檔案專案編譯範例

# main.c, utils.c, utils.h
gcc -Wall -O2 -c utils.c -o utils.o
gcc -Wall -O2 -c main.c -o main.o
gcc main.o utils.o -o myapp

或使用 Makefile 自動化建構,大型專案建議改用 CMake/Meson。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved