C 語言程序發布為 EXE 可執行文件完整流程:編譯、鏈接、部署與安裝包制作
將 `.c` 源文件變為用戶可雙擊運行的 `.exe`,需經歷預處理 → 編譯 → 彙編 → 鏈接四階段,產出獨立可執行文件。
核心流程圖解
source.c
│
▼ 預處理 (cpp) ─→ source.i (展開宏、包含頭文件、刪除註釋)
│
▼ 編譯 (cc1) ─→ source.s (生成彙編代碼)
│
▼ 彙編 (as) ─→ source.o (目標文件,機器碼,符號未解析)
│
▼ 鏈接 (ld) ─→ program.exe (可執行文件,符號解析、庫合併)
│
├─ 靜態鏈接:庫代碼複製進 exe,體積大、無依賴
└─ 動態鏈接:依賴 DLL/so,體積小、需運行時環境
各工具鏈生成 EXE 方法
| 環境 | 命令/操作 | 產出 |
| GCC/MinGW (命令行) | `gcc -o program.exe source.c` | 動態鏈接 (依賴 libgcc_s_seh-1.dll 等) |
| GCC 靜態鏈接 | `gcc -static -o program.exe source.c` | 獨立 EXE (體積較大,~100KB+) |
| MSVC (Developer Command Prompt) | `cl source.c /Feprogram.exe` | 動態鏈接 CRT (需 VC++ 運行庫) |
| MSVC 靜態 CRT | `cl /MT source.c /Feprogram.exe` | 靜態鏈接 CRT,較獨立 |
| Visual Studio IDE | 建構 → Release 配置 → 輸出目錄 | 同命令行,可配置安裝項目 |
| Turbo C / VC++ 6.0 | 菜單 Compile → Link → Make EXE | 16/32 位舊格式 EXE |
發布檢查清單
- ✅ **Release 模式**構建 (優化開啟、斷言關閉、無調試符號)
- ✅ 測試在無開發環境的乾淨機器運行
- ✅ 依賴 DLL 隨程序放置 (同目錄) 或靜態鏈接
- ✅ 圖標、版本信息、清單文件 (UAC、DPI 感知) 嵌入
- ✅ 數字簽名 (Code Signing) 避免 SmartScreen 警告
制作安裝包 (進階)
| 工具 | 特點 |
| Inno Setup | 免費、腳本式、壓縮率高、Windows 專用 |
| NSIS | 免費、腳本功能強、可自定義 UI、跨平台打包 |
| WiX Toolset | Microsoft 官方、XML 定義、生成 MSI、企業級部署 |
| CPack (CMake) | 構建系統集成、多格式 (NSIS/WIX/DEB/RPM/TGZ) |
最小發布腳本 (GCC + Inno Setup)
# build.bat
gcc -static -O2 -s -o myapp.exe main.c
# 可選: strip myapp.exe (進一步減小)
# install.iss (Inno Setup 腳本)
[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={pf}\MyApp
OutputDir=dist
Compression=lzma
SolidCompression=yes
[Files]
Source: "myapp.exe"; DestDir: "{app}"
Source: "README.txt"; DestDir: "{app}"
[Icons]
Name: "{group}\MyApp"; Filename: "{app}\myapp.exe"
Name: "{commondesktop}\MyApp"; Filename: "{app}\myapp.exe"
- 上一篇文章: 深入學習 C 語言 IDE 選擇:從 VC++6.0 遷移到 Visual Studio 2010/2022 或 Clang/GCC 工具鏈
- 下一篇文章: C 語言三角形面積計算:Heron 公式、輸入驗證、編譯警告修復完整版
Copyright ©
程式碼之家 All Rights Reserved