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

提取 VS 編譯工具鏈打造類 GCC 命令列編譯環境

     編輯:關於C語言

習慣了 Linux 下 GCC 編譯工具,反而喜歡上命令列方式編譯連結 C 程式。發現裝的 VS 工具沒看到直接編譯 C 程式的工具(不太熟悉)。VS 的編譯命令是 cl,連結命令是 link。參考網上資料,提取 VS 的編譯器檔案組成一個可命令列編譯的工具。步驟如下:

  1. 在自己目錄建立資料夾,如:D:/vctool
  2. 將 VS 安裝目錄下的 VC 目錄下的 bin、lib、include 目錄複製到 vctool 目錄下
  3. 將 C:/Program Files/Microsoft SDKs/Windows/V6.0A 或類似目錄(VS 安裝檔案)下的 Lib 目錄複製到 vctool 目錄下,重命名為 sdklib(不要覆蓋)
  4. 現在所需的命令檔案、庫檔、include 檔案都複製過來了,將 bin 目錄加到環境變數 path 中
  5. 編寫 C 語言檔案 Test.c:
    #include "stdio.h"
    __declspec(dllexport) int sum(int a, int b)
    {
        return a + b;
    }
  6. 編寫編譯批次檔 build.bat:
    set PATH=./;D:/vctool/bin;%path%
    set INCLUDE=D:/vctool/include
    set LIB=D:/vctool/lib;D:/vctool/sdklib
    
    cl /c Test.c
    link /dll Test.obj
    pause
  7. 雙擊執行 build.bat,若出現找不到 mspdb80.dll 錯誤,在 VS 安裝目錄搜尋並複製到 vstool/bin 目錄下;再次執行編譯成功,目錄下生成 Test.dll、Test.lib、Test.obj

若連結時出現 LINK: fatal error LNK1104:無法打開檔案 "kernel32.lib",則是因為 sdklib 沒複製正確或沒設到環境變數 LIB(build.bat)。

cl 命令常用選項

  • /c:編譯但不連結
  • /Zs:檢查語法
  • /Fe:重命名可執行檔
  • /I:指定包含檔目錄
  • /LD:建立動態連結庫
  • /MD:使用 MSVCRT.lib 建立多執行緒 DLL
  • /O2:建立快速代碼
  • /W3:設定警告等級

link 命令常用選項

  • /DLL:生成 DLL
  • /LIBPATH:允許使用者重寫環境庫路徑
  • /MACHINE:X86:指定目標平台
  • /SUBSYSTEM:WINDOWS:指定子系統
  • /OUT:指定輸出檔名

此外 rc 是資源編譯工具。MFC 開發流程:編譯源碼 → 資源編譯 → 連結。

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