首先,無論是Windows仍是Linux版本CoreCLR的編譯,都是在Windows10上進行的。python
在Windows上作編譯怎麼能少得了Visual Studio,因爲Visual Studio 2017剛剛發佈,因此選用Visual Studio 2017版本做爲編譯工具。linux
.NET Desktop Developmentgit
Desktop Development with C++github
還有一個比較重要的問題,就是使用VS2017的話,還須要註冊一個Visual Studio 2015的組件,須要運行以下命令:regsvr32.exe %VSINSTALLDIR%\Common7\IDE\msdia120.dll ,由於須要VS2017的環境變量,固然這也須要在Developer Command Prompt for VS2017 中運行。
還有最重要一點Visual Studio Express 2017不支持編譯CoreCLR。shell
要編譯CoreCLR須要CMake 3.7.2及以上版本,記得加環境變量Path。ubuntu
官方給出的所需版本爲 python 2.7.9,可是python 3也能很好的支持,記得加環境變量Path。windows
這個是必需的嘛。bash
Windows 10 自帶4.0,因此Win10就沒問題。curl
不須要解釋吧,沒有去官網下載吧。ide
其實這部分有個小插曲就是,若是使用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版本。
這裏使用Windows 10編譯Linux版本是由於Win10裏帶有Bash,bash是一個基於Ubuntu 14.04的Windows子系統,能夠「完美」模擬Linux環境,固然下面所講的過程也徹底能夠在真正的Ubuntu上編譯。
官方推薦的是ubuntu 14.04,固然也能夠是別的Linux版本,本文也是使用這個版本進行的。
要安裝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
./build.sh
Linux上的編譯相對比較簡單,可是若是是DEBUG的話,Windows版本要很容易實現。編譯兩個版本的過程當中會通過漫長的等待(最好找個代理)。
下篇文章我會講下在Windows環境下的調試,還有我作的一些小的修改過程。