一、编译环境

首先,不管是Windows还是Linux版本CoreCLR的编译,都是在Windows10上进行的。

二、CoreCLR for Windows

在Windows上做编译怎么能少得了Visual Studio,由于Visual Studio 2017刚刚发布,所以选用Visual Studio 2017版本作为编译工具。

编译组件

Visual Studio 2017安装组件

.NET Desktop Development

  • All Required Components
  • .NET Framework 4-4.6 Development Tools

Desktop Development with C++

  • All Required Components
  • VC++ 2017 v141 Toolset (x86, x64)
  • Windows 8.1 SDK and UCRT SDK
  • VC++ 2015.3 v140 Toolset (x86, x64)

还有一个比较重要的问题,就是使用VS2017的话,还需要注册一个Visual Studio 2015的组件,需要运行如下命令:regsvr32.exe %VSINSTALLDIR%\Common7\IDE\msdia120.dll ,因为需要VS2017的环境变量,当然这也需要在Developer Command Prompt for VS2017 中运行。

还有最重要一点Visual Studio Express 2017不支持编译CoreCLR。

CMake

要编译CoreCLR需要CMake 3.7.2及以上版本,记得加环境变量Path。

Python

官方给出的所需版本为 python 2.7.9,但是python 3也能很好的支持,记得加环境变量Path。

Git

这个是必需的嘛。

PowerShell

Windows 10 自带4.0,所以Win10就没问题。

DotNet Core SDK

不需要解释吧,没有去官网下载吧。

windows编译

其实这部分有个小插曲就是,如果使用Visual Studio 2017编译的话会有一个小BUG,文档上给的例子是直接运行命令:

 ./build.cmd

但是会得到如下结果:

Microsoft.CSharp.Core.targets(106,11): error MSB4064: The "OverrideToolHost" parameter is not supported by the "Csc" task. Verify the parameter exists on the task, and it is a settable public instance property.

BUG的地址如下:https://github.com/dotnet/coreclr/issues/10056

运行下面三条命令其中之一就可以解决这个问题了,解决方法如下:

build x64 skiptests -- /p:CSharpCoreTargetsPath=Roslyn\Microsoft.CSharp.Core.targets

build x64 checked skiptests -- /p:CSharpCoreTargetsPath=Roslyn\Microsoft.CSharp.Core.targets

build x64 release skiptests -- /p:CSharpCoreTargetsPath=Roslyn\Microsoft.CSharp.Core.targets

推荐第一条命令,生成DEBUG版本。

三、CoreCLR for Linux

这里使用Windows 10编译Linux版本是因为Win10里带有Bash,bash是一个基于Ubuntu 14.04的Windows子系统,可以“完美”模拟Linux环境,当然下面所讲的过程也完全可以在真正的Ubuntu上编译。

系统

官方推荐的是ubuntu 14.04,当然也可以是别的Linux版本,本文也是使用这个版本进行的。

系统组件

  • cmake
  • llvm-3.5
  • clang-3.5
  • lldb-3.6
  • lldb-3.6-dev
  • libunwind8
  • libunwind8-dev
  • gettext
  • libicu-dev
  • liblttng-ust-dev
  • libcurl4-openssl-dev
  • libssl-dev
  • uuid-dev
  • git

要安装lldb-3.6需要在Ubuntu上添加安装源:

echo "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.6 main" | sudo tee /etc/apt/sources.list.d/llvm.list

wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -

sudo apt-get update

如果系统里没有git的话,需要自己安装下。接着要安装组件,命令如下:

sudo apt-get install cmake llvm-3.5 clang-3.5 lldb-3.6 lldb-3.6-dev libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4-openssl-dev libssl-dev uuid-dev

Linux编译

./build.sh

四、总结

Linux上的编译相对比较简单,但是如果是DEBUG的话,Windows版本要很容易实现。编译两个版本的过程中会经过漫长的等待(最好找个代理)。

下篇文章我会讲下在Windows环境下的调试,还有我做的一些小的修改过程。

Win10上编译CoreCLR的Windows和Linux版本的更多相关文章

  1. 在Linux CentOS上编译CoreCLR

    经过几天的努力,终于解决了在CentOS上编译CoreCLR的问题.最终发现问题是CMAKE_C_FLAGS的设置引起的. 只要在“src/pal/tools/clang-compiler-overr ...

  2. 【转帖】Linux上搭建Samba,实现windows与Linux文件数据同步

    Linux上搭建Samba,实现windows与Linux文件数据同步 2018年06月09日 :: m_nanle_xiaobudiu 阅读数 15812更多 分类专栏: Linux Samba 版 ...

  3. .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 T ...

  4. win10上使用Xshell通过ssh连接Linux

    Windows 10上现在能安装Linux子系统了,正好最近.Net Core也逐渐发展起来了,我也就在自己电脑上搞了一下 在Windows 10上安装Ubuntu的过程就不用说了,都是流程性的东西 ...

  5. VS2015在win10上编译的程序在Win7上运行的方法

    在win10系统上使用vs2015编译了一个32位的应用程序.在win7上报错无法启动. 下面的win7系统上是可以运行的 无法运行的win7系统: 报错: 1.应用程序无法正常启动(0xc00000 ...

  6. redis安装,windows,linux版本并部署服务

    一.使用场景         项目中采用数据库访问量过大或访问过于频繁,将会对数据库带来很大的压力.redis数据库是以非关系数据库的出现,后来redis的迭代版本支持了缓存数据.登录session状 ...

  7. Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll

    最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...

  8. 完全卸载win10上的Ubuntu子系统 - Windows Subsystem for Linux(WSL)

    Ctrl + R 键入: lxrun /uninstall /full 具体请看 microsoft的说明:Frequently Asked Questions

  9. Xftp连接阿里云Linux,向Linux上传文件,Windows和Linux文件传输

    我之前是用SecureCRT连接阿里云Linux的,上传文件用的Alt+p快捷键,感觉不是很方便.后来朋友给我推荐了Xshell,感觉确实好用得很多. 传输文件用的是Xftp,今天在向我的个人网站发布 ...

随机推荐

  1. 深入了解GCD

    首先提出一些问题: dispatch_async 函数如何实现,分发到主队列和全局队列有什么区别,一定会新建线程执行任务么? dispatch_sync 函数如何实现,为什么说 GCD 死锁是队列导致 ...

  2. (三)Lua脚本语言入门

    又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的"艰苦忍耐"式的奋斗,那这是一种很不足的心理状态 ...

  3. windows 下odoo 不同版本安装运行问题

    在开发测试不同版本odoo时,总会遇到在同一浏览器下运行出错的状况.虽然可以把不同版本分属不同的端口,但是登录标识会入写用户本地浏览器cookie,由于cookie只匹配域名及路径但是不区分端口, 所 ...

  4. pwnable.kr-collision -Writeup

    bof html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,addres ...

  5. Windows|Windows Server 2003单网卡搭建VPN

    1.[开始]--->[程序]--->[管理工具]--->[路由和远程访问].如下图所示: 2.选中"本地"右键"配置并启用路由和远程访问".如 ...

  6. 一个技术汪的开源梦 —— 微信开发工具包(WeixinSDK)

    由于春节的关系 WeixinSDK 这个开源项目的进展比预期推迟了大约一个月的时间,值得高兴的是到目前为止该项目的重要模块已经开发完毕.  - 关于项目 该项目的背景是现在微信公众号.微信服务号乃至微 ...

  7. hadoop2.5.2安装部署

    0x00 说明 此处已经省略基本配置步骤参考Hadoop1.0.3环境搭建流程,省略主要步骤有: 建立一般用户 关闭防火墙和SELinux 网络配置 0x01 配置master免密钥登录slave 生 ...

  8. iframe的优缺点?

    1.`<iframe>`优点: 解决加载缓慢的第三方内容如图标和广告等的加载问题 Security sandbox 并行加载脚本 2.`<iframe>`的缺点: *ifram ...

  9. 纪中集训 Day 6

    今天他们回去了,就剩我和DWJ(一位初三大大(后来问云神才知道的ORZ))一起在做题,不得不说他真的是太厉害了,一个升初三大大在各种方面都比我强QAQ 让我突然感觉到自己的高一还是不够努力啊QAQ 连 ...

  10. Mac入门推荐(写给Mac小白)

    本人第一次接触Mac是在2016年10月中旬,那时由于对苹果系统的不熟悉,导致自己一开始的时候用的很不习惯,甚至还想换回Windows系统.总所周知,苹果系统的软件比较少,在此我向大家推荐一些个人觉得 ...