Windows上成功編譯CoreCLR源代碼


昨天得知微軟在GitHub上發布CoreCLR的源代碼之后,立馬從GitHub上簽出代碼,並嘗試在Windows Server 2012上進行編譯。

參考CoreCLR的開發者指南(Developer Guide),先安裝CMake —— CoreCLR所用的開源跨平台Build工具。

然后將 C:\Program Files (x86)\Microsoft Visual Studio 11.0 文件夾(VS2012)中的DIA SDK文件夾復制/粘貼至 C:\Program Files (x86)\Microsoft Visual Studio 11.0 文件夾(VS2013)中。[注:我的電腦上安裝過VS2012,現在安裝有VS 2013與VS 2015 CTP 5]

然后運行VS 2013的命令行Developer Command Prompt for VS2013,進入CoreCLR代碼庫所在的文件夾,運行命令 build clean 進行編譯。

Commencing CoreCLR Repo build
Doing a clean build
Checking pre-requisites...
Commencing build of native components for x64/debug
...

編譯了近20分鍾,結果以失敗告終,出現了400多個錯誤。大量錯誤都是這樣的:

error C2220: warning treated as error - no 'object' file generated

在GitHub的CoreCLR Issue列表中發現有人遇到了同樣的問題(Can't built, it turns out 'warning C4819' #49),CoreCLR的開發人員Matt Ellis正在努力解決,問題似乎與Windows的語言設置(system locacle)有關。我的電腦上雖然安裝的是英文版Windows,但system locacle設置的是中文,見下圖:

后來Matt Ellis發布了一個CoreCLR的fork解決了這個問題。

今天早上git pull coreclr發現這個修復已經合並到CoreCLR的代碼庫中。於是繼續對CoreCLR進行Build嘗試,error C2220錯誤消失了,但依然沒有build成功,還有幾十個錯誤。

發現其中有這樣的錯誤:

fatal error C1083: Cannot open source file: 
'C:\Program Files (x86)\Microsoft Visual Studio 12.0\DIA SDK\idl\dia2.idl': 
No such file or directory

到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\DIA SDK 中一看,只有一個bin文件夾,根本沒有idl文件夾。

DIA SDK是從 C:\Program Files (x86)\Microsoft Visual Studio 11.0 文件夾中復制過來的,雖然安裝過VS 2012,但安裝VS 2013之后,將VS 2012卸載了,DIA SDK中只有bin文件夾可能與這個有關。

后來,抱着試試看的心理,到VS 2015的文件夾 C:\Program Files (x86)\Microsoft Visual Studio 14.0 中看了一下,也有DIA SDK文件夾,而且其中有idl文件夾。於是,將這個DIA SDK文件夾復制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\ 中重新進行build。

DIA SDK文件夾

這次終於build成功了!可以在binaries\Product\x64\debug文件夾中看到編譯的成果。

另外,在CoreCLR的代碼庫中沒有可供Visual Studio打開的.sln文件。后來在編譯生成的binaries\CMake文件夾中發現了CoreCLR.sln,用Visual Studio打開它即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM