zoukankan      html  css  js  c++  java
  • 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.0DIA SDKidldia2.idl': 
    No such file or directory

    到 C:Program Files (x86)Microsoft Visual Studio 12.0DIA 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成功了!可以在binariesProductx64debug文件夹中看到编译的成果。

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

  • 相关阅读:
    ed新手使用进阶全功略
    directx的媒体对象
    Makefile详解
    Bourne Shell及shell编程(1)
    Win32CompileMSYSNew
    GNU hello学习笔记(1)——autoconf和automake
    VC++中通过MultiByteToWideChar将string|char*转换为wstring|wchar_t*
    使用 Bash shell 脚本进行功能测试[转]
    添加VLC模块
    libvlc外部api的简单整理
  • 原文地址:https://www.cnblogs.com/dudu/p/build_coreclr_20150205.html
Copyright © 2011-2022 走看看