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

在 Visual Studio 2012 (MSVC) 下編譯 SDCC 編譯器完整指南

     編輯:關於C++

背景

SDCC (Small Device C Compiler) 是開源免費的 8051 等單片機 C 編譯器,源碼可移植。本文記錄在 Windows 下用 VS2012 編譯 SDCC 全過程,解決依賴庫、工具鏈、項目升級等常見坑點。

1. 獲取源碼

  • 方式一:SVN 棧出 svn://svn.code.sf.net/p/sdcc/code/trunk/sdcc
  • 方式二:下載最新源碼包 sdcc-src-yyyymmdd-rrrr.tar.bz2

2. 安裝 VS2012 並打開方案

  • 安裝 VS2012(需 C++ 工作負載)
  • 打開 sdcc.sln,提示升級至 VS2012 格式 → 全部確認升級
  • 注意:ucSim 子項目在 VS2012 下無法編譯,可右鍵「卸載項目」暫時排除

3. 配置 Boost 庫

  • 下載 Boost(建議 1.6x 版本),解壓至如 D:\boost_1_69_0
  • 項目屬性 → VC++ 目錄 → 包含目錄 添加 Boost 根目錄
  • 庫目錄添加 stage/lib(需先運行 bootstrap.bat && b2 構建庫)

4. 準備構建工具:bison, flex, gawk (UnxUtils)

詞法/語法分析器生成需 GNU 工具。Windows 下推薦 UnxUtils:

  • 下載 UnxUtils.zip,解壓至 C:\UnxUtils
  • 將 C:\UnxUtils\usr\local\wbin 加入系統 PATH 或 VS「VC++ 目錄 → 可執行文件目錄」
  • 關鍵:必須用此版本,其他移植版(如 GnuWin32)可能導致 stdcpp 項目編譯失敗

5. 編譯與輸出

  • VS 中選擇「生成 → 重新生成解決方案」
  • 成功後,輸出文件位於 sdcc\bin_vc\
  • 發布時:將 bin_vc\* 複製到 sdcc\bin\ 目錄,即可直接運行 sdcc.exe 編譯 51 代碼

常見錯誤與解決

錯誤現象原因解決
找不到 bison/flex/gawk工具不在 PATH配置 UnxUtils 目錄到 VC++ 可執行文件目錄
boost 鏈接錯誤庫未構建或路徑錯誤運行 b2 構建,正確配置庫目錄
ucSim 編譯失敗VS2012 不兼容卸載該項目,不影響主編譯器
stdcpp 項目報錯flex/bison 版本不匹配強制使用 UnxUtils 版本

驗證編譯器

cd sdcc\bin
sdcc.exe --version
# 輸出類似:SDCC 4.2.0 #12345 (MINGW64) ...

編寫簡單 51 程序測試編譯:

// test.c
#include 
void main() { P1 = 0xFF; while(1); }
sdcc test.c
# 生成 test.ihx 即成功

總結

關鍵點:VS2012 升級方案、Boost 庫預構建、UnxUtils 提供 GNU 工具鏈、排除 ucSim。完成後即擁有可在 Windows 原生運行的 SDCC,可進一步研究編譯器前端/後端、優化通道、目標機描述等核心模塊。

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