四步走:編寫 → 編譯 → 鏈接 → 運行
1. 編寫源代碼
- 文件名
.c (如 hello.c)。
- 編碼統一用 UTF-8 (無 BOM)。
2. 編譯 (Compile)
gcc -c hello.c -o hello.o
# 或一步到位
gcc hello.c -o hello
- 預處理:展開宏、包含頭文件、條件編譯 →
.i。
- 編譯:語法/語義分析、生成匯編 →
.s。
- 匯編:匯編指令 → 機器碼目標文件
.o/.obj (含符號表、重定位表)。
3. 鏈接 (Link)
- 合併多個
.o 與庫文件 (libc 等)。
- 符號解析:解決外部引用 (如
printf 在 libc 中)。
- 重定位:分配最終虛擬地址。
- 生成可執行文件:Windows
.exe、Linux ELF (無後綴)、macOS Mach-O。
4. 運行 (Run)
| 平台 | 命令 | 說明 |
| Windows CMD | hello.exe 或 hello | PATHEXT 包含 .exe |
| PowerShell | .\hello.exe | 需 .\ 指明當前目錄 |
| Linux/macOS 終端 | ./hello | 需執行權限 chmod +x hello,./ 指明當前目錄 |
| IDE (VS Code/VS/CLion/Code::Blocks) | 點擊「運行」按鈕 (▶/F5/Ctrl+F5) | IDE 自動完成編譯鏈接並啟動終端 |
常見新手問題
- 「雙擊 .exe 閃退」:程序跑完即關閉控制台。
→ 代碼末尾加 getchar(); 或 system("pause"); (Windows),或在終端手動運行。
- 「找不到 gcc」:未安裝或未加入 PATH。
→ Windows 裝 MinGW-w64 並加入 PATH;Linux sudo apt install build-essential。
- 「Permission denied」:Linux 下無執行權限。
→ chmod +x hello。
- 「缺少 dll」:動態鏈接庫未隨程序部署。
→ 靜態鏈接 -static 或將 dll 放同目錄。
一鍵構建腳本 (Makefile 入門)
CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -g
TARGET = hello
SRC = hello.c
all: $(TARGET)
$(TARGET): $(SRC)
$(CC) $(CFLAGS) -o $@ $^
clean:
rm -f $(TARGET) *.o
終端輸入 make 即可自動增量構建,make clean 清理產物。
理解編譯鏈接運行全流程,是從「寫代碼」邁向「工程化開發」的第一步。
- 上一篇文章: 零基礎學 C 語言:從「看到代碼就害怕」到「寫出第一個專案」
- 下一篇文章: C 語言逗號運算子與賦值運算子綜合題深度解析
Copyright ©
程式碼之家 All Rights Reserved