當你想使用一個開源的工具來開發單片機51程序時,可以使用SDCC編譯器,它不僅是免費的,還是開放源碼的編譯器;不僅讓你可以開發51的程序,還可以深入了解編譯原理的編譯器。通過本文的指導,你可以實現自己編譯一個51編譯器出來,也可以繼續深入地了解編譯器的原理作為基礎。
為了下載SDCC編譯器的源碼,你得先到官方網站下載相應的代碼,下載代碼有兩種方式:方式一是通過SVN代碼庫來下載:
使用SVN工具就可以通過上面的連接把源代碼下載。
方式二是通過壓縮包的方式下載:
在這種方式裡,文件包命名為sdcc-src-yyyymmdd-rrrr.tar.bz2方式,找到最新的壓縮包下載即可。
接著自行安裝VC2012版本,不過在VC2012版本裡不能編譯SDCC的工程ucSim。安裝VC2012之後,就可以到SDCC的目錄下面找到解決方案文件sdcc.sln,打開這個方案文件,並在加載完成之後,會提問是否升級到VC2012的工程,因為SDCC官方還是建議使用VC2010開發。當所有工程編譯通過之後,就會在目錄sdccin_vc生成所有執行文件。當你需要發布出去時,可以從目錄sdccin_vc拷貝到sdccin目錄裡,就可以運行起來了。
SDCC的部分工程裡使用開源庫boost庫,因此你需要到網站:
http://www.boost.org/
下載相應的版本,解壓放到一個目錄下,然後在VC2012的工程目錄裡指定相應的路徑。就可以編譯與boost相關的工程了。
為了編譯詞法分析和語法分析部分相關的代碼,需要工具bison.exe,flex.exe和gawk.exe,可到網站htttp://unxutils.sourceforge.net下載,主要下載文件UnxUtils.zip。當成功下載之後,在根目錄下創建一個文件夾c:UnxUtils,然後把所有文件解壓到此目錄下面。然後在VC++Directories目錄裡添加此目錄,這樣就讓可以工程訪問相應的工具。
記得一定下載此版本UnxUtils的執行文件,其它版本的執行的文件,可能會導致stdcpp項目編譯不通過。
做這些動作之後,在VC2012的工程裡選擇 build all就可以編譯所有文件出來。後面就可以在目錄sdccin_vc找到所有輸出文件,拷貝到sdccin就可以使用了,可以開始對51的程序進行開發和編譯了。