Win10上编译CoreCLR的Windows和Linux版本

一、编译环境

首先,不管是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.listwget -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环境下的调试,还有我做的一些小的修改过程。

原文地址:http://www.cnblogs.com/maxzhang1985/p/6596776.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑。这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应用。 问题分析 听说Windows支持原生docker了,大家一定都…

2017蓝桥杯省赛---java---C---2(兴趣小组)

题目描述 思路分析 直接进行暴力解决 代码实现 package TEST;import java.math.BigInteger;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubint[] A {12894792, 92774113, 59529208, 22962224,2991600, 83340521, 87365045…

人脸识别活体检测之张张嘴和眨眨眼

暑【这段时间有点忙,终于截止今天2018.06.22完成了人脸识别的最后一道程序——活体检测之眨眨眼和张张嘴】关于人脸识别的内容我之前也写过好几篇博文,其中有: {java实现人脸识别源码} {C#winforms实现windows窗体人脸识别} {人脸识别活体检测…

让智能机器人更智能

Microsoft Bot Framework、LUIS、Azure Bot Service 和 Azure Functions 均已推出。最近到处有人在说:智能机器人是新应用。原因之一就是,智能机器人能够让你轻松、高效地完成常见任务。想一想: 只需让某种数字助理为你执行相关操作&#xff…

2017蓝桥杯省赛---java---C---7 Excel地址)

题目描述 Excel单元格的地址表示很有趣,它使用字母来表示列号。 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, …当然Excel的最大列号是…

Excel的基础操作

一、Excel的界面组成部分:标题栏、功能选项卡、单元格名称、功能面板、编辑栏、工 作导航按钮、工作表标签 二、一个工作薄默认包含三个工作表,可以自己添加工作表 三、单元格操作:1.编辑内容:(1)单击需要添加内容的单元格–》输…

有效事件: 可取代数十种设计模式

编辑寄语 当我让 MSDN 杂志高级特约编辑 James McCaffrey 审阅本文的初稿时,他为本文作者提出的一些观点和想法所震怒,愤愤然地离开了。大多数时候,这预示着文稿不通过。但 McCaffrey 指出,软件工程中的新概念遭到摒弃再常见不过&…

2018蓝桥杯省赛---java---C---1(哪天返回)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int i1,num1,sum1;//num每天挣的钱&#xff0c;sum总共挣的钱while (sum<108){sum(num2);i;//表示天数}System.out.println(i);} }答案 11

PS中缩放工具的细微缩放不可以使用的解决方法

我的PS中的细微缩放是灰色的&#xff0c;就像是这样的&#xff1a; 那么怎么办呢&#xff1f; 解决方法如下&#xff1a; 1.点击PS菜单栏中的“编辑”–>首选项–>性能–》然后吧【启动OpenGL绘图】的复选框勾选上–>确定。 2.重新打开图片就可以了。 希望对大家…

MySQL month()函数

转载自 MySQL month()函数 MySQL MONTH函数介绍 MONTH函数返回一个整数&#xff0c;表示指定日期值的月份。 以下说明了MONTH函数的语法&#xff1a; MONTH(date);MONTH函数接受一个DATE或DATETIME值的参数。 它返回1到12之间的整数&#xff0c;范围从1到12。 如果通过零日…

263. 丑数---LeetCode---JAVA

class Solution {public boolean isUgly(int n) {while(n>0){if(n%20){n/2;}else if(n%30){n/3;}else if(n%50){n/5;}else{break;}}return n1;} }

老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

经过上两篇实战Windows Server Docker系列文章&#xff0c;大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识。接下来我们来简单讲讲一些最基本的运维问题。鉴于到目前为止我们只谈到单服务器部署。这里暂时不涉及集群模式下的复杂生产环境运…

ps中扩展画布的时候,不能选择扩展画布部分的颜色解决方法

在PS中&#xff0c;我们有时候会遇到扩展画布的场景&#xff0c;但是扩展完画布之后我们发现不能改变颜色&#xff0c;这可怎么办。 首先来看一下是什么样的问题&#xff1a; 这个背景是不能选择的。 问题分析&#xff1a;这是因为你创建的画布的时候颜色是透明色的&#xff0…

异或运算(^)

针对二进制&#xff0c;相同的为0&#xff0c;不同的为1 注意事项 前提i位置的数不等于j位置的数 public static void swap(int[] arr,int i,int j){arr[i]arr[i]^arr[j];arr[j]arr[i]^arr[j];arr[i]arr[i]^arr[j];}

jQuery遍历div,判断是否为空,为空时执行某个操作

以下运行结果&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link rel"stylesheet" type"text/css" href"css/css.css"/>&l…

Dapper源码学习和源码修改

之前ORM比较火热&#xff0c;自己也搞了个WangSql&#xff0c;但是感觉比较low&#xff0c;大家都说Dapper性能好&#xff0c;所以现在学习学习Dapper&#xff0c;下面简单从宏观层面讲讲我学习的Dapper。 再了解一个东西前&#xff0c;先得学会使用&#xff0c;我也不再赘述怎…

php批量评价,彻底杜绝 WordPress 批量垃圾评论留言的三步曲

本文将详细介绍如何采取三步曲彻底告别烦人的 WordPress 批量垃圾评论问题&#xff0c;还你一个干净清爽的后台评论区。刚开始使用 WordPress 程序建站的朋友们肯定或多或少都被其批量垃圾评论困扰过。然后大家就开始寻思解决的办法&#xff0c;找到的网上说法大都是 Akismet A…

MySQL sysdate()函数

转载自 MySQL sysdate()函数 MySQL SYSDATE函数介绍 下面说明了SYSDATE()函数的语法&#xff1a; SYSDATE(fsp);如果函数用于字符串上下文或YYYYMMDDHHMMSS格式&#xff0c;则SYSDATE()函数将返回当前日期时间&#xff0c;格式为“YYYY-MM-DD HH:MM:SS”的值&#xff0c;以…

2018蓝桥杯省赛---java---C---2(猴子分香蕉)

题目描述 思路分析 直接采用暴力破解&#xff0c;先限定范围&#xff0c;然后依次筛选出满足条件的情况。 代码实现 package TEST;public class Main {public static void main(String[] args) {for (int i 5; i < 10000; i) {int temp i;if (temp % 5 1) {temp temp…

纯前端JS实现人脸识别眨眨眼张张嘴案例

在不久之前我发布了一个案例&#xff0c;是java通过百度云人脸识别接口实现活体检测&#xff08;张张嘴和眨眨眼&#xff09;的案例&#xff0c;大家可以去看看&#xff1a;人脸识别活体检测之眨眨眼和张张嘴&#xff0c;今天我就抽空更新一下纯JS的活体检测吧。 首先给大家看一…