编译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。

这次终于build成功了!可以在binaries\Product\x64\debug文件夹中看到编译的成果。

另外,在CoreCLR的代码库中没有可供Visual Studio打开的.sln文件。后来在编译生成的binaries\CMake文件夹中发现了CoreCLR.sln,用Visual Studio打开它即可。

时间: 2024-10-10 12:25:10

编译CoreCLR源代码的相关文章

Mac OS X上尝试编译CoreCLR源代码

CoreCLR登陆GitHub之后,体验CoreCLR首当其冲的方式就是在自己的电脑上编译它,昨天分别在Windows与Linux上成功编译了CoreCLR,详见: 1)Windows上成功编译CoreCLR源代码 : 2)Linux上成功编译CoreCLR源代码 . Windows与Linux上编译成功之后,有一个挡不住的冲动——在Mac上编译CoreCLR.虽然微软目前优先考虑的是Windows与Linux两个平台,CoreCLR的编译暂时不支持Mac OS X,但我最期待的却是在Mac O

Linux上编译CoreCLR源代码

>>Build日期:2015-2-5. Linux发行版用的是CentOS 6.5,操作步骤: 1)配置git: git config --global http.sslverify false 2)签出github上的CoreCLR代码库: git clone https://github.com/dotnet/coreclr.git 3)安装cmake: yum install cmake 4)安装clang: yum install clang 5)运行build命令: sh build

在Linux CentOS上编译CoreCLR

经过几天的努力,终于解决了在CentOS上编译CoreCLR的问题.最终发现问题是CMAKE_C_FLAGS的设置引起的. 只要在“src/pal/tools/clang-compiler-override.txt”中删除“SET (CMAKE_C_FLAGS_INIT "-Wall -std=c11") ”,在“src/pal/tests/CMakeLists.txt”添加“SET (CMAKE_C_FLAGS "-Wall -std=c11")”,就能编译了.

Android APK通过反编译获取源代码

1.首先将apk文件后缀改为RAR并解压. 2.使用7zip解压rar文件(winrar解压会报错),得到其中的classes.dex文件 3.将解压得到的classes.dex文件放入dex2jar文件夹下--实质为与dex2jar.bat路径一致 4.用dex2jar 把classes.dex文件转为jar文件运行cmd,进入dex2jar所在目录,执行命令:dex2jar.bat   classes.dex  生成 classes_dex2jar.jar 5.最后用jd-gui.exe打开

vs2010编译notepad++源代码 (转载)

按照文章操作步骤,已经编译成功,以下为转载内容: 1.自己到下载源码 2.解压: 其中Notepad++的源码在PowerEditor文件夹里.Scintilla是一个插件,后面要在PowerEditor里面用的. 3.先打开scintilla文件夹.看到如图: 再打开vcbuild: 再用VC++6.0编译scilexer.dsp. 最终是为了得到一个.dll文件(在scintilla\bin里面)(不知道网上有下载吗?) 4.编译notepad++: 进入这个目录:PowerEditor\v

LINUX下如何编译MYSQL源代码

LINUX下如何编译MYSQL源代码 Linux下面编译MYSQL的源代码方式如下: 首先下载源代码:选择下面这个版本: 下载相应的CMake, gcc, bison等所依赖组件: a) 安装cursor library: b) 安装gcc 和 gcc-c++ c) 下载boost:  用g++ 或者根据不同的参数,指定参数,然后运行CMAKE: cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/loca

编译Android源代码与内核总结

这些天花了些时间自己下载了android源代码来编译,当中走了一些弯路导致耗了些时间,如今又一次梳理总结下,让有同样想法的人自己编译的时候能少走些弯路,官方指导文档在http://source.android.com/source/initializing.html. 1.安装linux环境 我是windows系统,安装了Vmware虚拟机.在虚拟机上装了ubuntu-12.04,我的这个版本号是32位的,这个还蛮重要的.安装32位或者64位的将决定你能编译的android版本号,官方文档里Fo

2.2开源的魅力:编译opencv源代码

1.下载安装CMake 要在Windows平台下生成opencv的解决方案,需要一个名为CMake的开源软件.CMake的全称是crossplatform make.它是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).它能输出各种makefile或者project文件.CMake的组态档取名为CmakeLists.txt.CMake并不直接构建出 最终的软件,而是产生标准的构建档,如Linux下的Makefile,windows下Visual C++de proj

.NET跨平台:在Linux Ubuntu上编译coreclr/corefx/dnx(20150617)

编译时间:北京2015年6月17日上午 操作系统:Ubuntu 14.04.2 LTS Mono版本:Mono JIT compiler version 4.3.0 (master/3445ac5 Tue Jun 16 20:43:48 CST 2015) 一.编译coreclr 成功! Repo successfully built. Product binaries are available at /data/git/coreclr/bin/Product/Linux.x64.Debug