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

C 語言程序發布為 EXE 可執行文件完整流程:編譯、鏈接、部署與安裝包制作

     編輯:C 語言問答

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 EXE16/32 位舊格式 EXE

發布檢查清單

  • ✅ **Release 模式**構建 (優化開啟、斷言關閉、無調試符號)
  • ✅ 測試在無開發環境的乾淨機器運行
  • ✅ 依賴 DLL 隨程序放置 (同目錄) 或靜態鏈接
  • ✅ 圖標、版本信息、清單文件 (UAC、DPI 感知) 嵌入
  • ✅ 數字簽名 (Code Signing) 避免 SmartScreen 警告

制作安裝包 (進階)

最小發布腳本 (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"
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
工具特點
Inno Setup免費、腳本式、壓縮率高、Windows 專用
NSIS免費、腳本功能強、可自定義 UI、跨平台打包
WiX ToolsetMicrosoft 官方、XML 定義、生成 MSI、企業級部署
CPack (CMake)構建系統集成、多格式 (NSIS/WIX/DEB/RPM/TGZ)