>>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.sh
6)build結果——失敗!錯誤信息如下:
Commencing CoreCLR Repo build Checking pre-requisites... Commencing build of native components for amd64/debug Invoking cmake with arguments: /data/git/coreclr DEBUG Detected Linux x86_64 -- Configuring done -- Generating done -- Build files have been written to: /data/git/coreclr/binaries/CMake Executing make [ 0%] Building CXX object src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o In file included from /data/git/coreclr/src/pal/src/exception/seh.cpp:22: In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/typeinfo:34: In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:148: /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception_ptr.h:143:13: error: unknown type name 'type_info' const type_info* ^ 1 error generated. make[2]: *** [src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o] Error 1 make[1]: *** [src/pal/src/CMakeFiles/CoreClrPal.dir/all] Error 2 make: *** [all] Error 2 Failed to build coreclr components.
【更新】
>>Build日期:2015-2-5晚上(編譯成功)。
后來,將遇到的這個問題在github coreclr issue #77中提交了一下,很快有人回復編譯器只能用clang 3.5。
看了一下CentOS安裝的最新版clang是clang 3.4.2,看來是這個問題引起的。
要到LLVM官網上一看,預編譯好的clang 3.5有Ubuntu的版本,但沒有CentOS的。
于是,干脆將操作系統換成Ubuntu。在Ubuntu上用apt-get install clang安裝,也是clang 3.4,只有手動安裝clang 3.5。
手動安裝參考的是園子里的這篇博文:在 Linux 下使用 clang 3.0 + llvm 3.0 + libc++。
在Ubuntu中編譯CoreCLR的實際操作步驟如下:
1)安裝cmake: apt-get install cmake
2)下載預編譯好的clang 3.5: wget http://llvm.org/releases/3.5.0/clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
3)解壓下載好的clang 3.5壓縮包: tar xvf clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
4)進入解壓后的文件夾: cd clang+llvm-3.5.0-x86_64-linux-gnu
5)復制其中的文件至/usr: cp -R * /usr
6)編譯CoreCLR: sh build.sh
7)等待編譯結果:
Commencing CoreCLR Repo build build.sh: 101: build.sh: Bad substitution build.sh: 161: [: false: unexpected operator Checking pre-requisites... Commencing build of native components for amd64/debug Invoking cmake with arguments: /data/git/coreclr DEBUG Detected Linux x86_64 -- Configuring done -- Generating done -- Build files have been written to: /data/git/coreclr/binaries/CMake Executing make [ 0%] Building CXX object src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o ...
結果。。。編譯成功了!
[100%] Built target mscordaccore Install the project... -- Install configuration: "DEBUG" -- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./corerun -- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./libmscordaccore.so -- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./libcoreclr.so Repo successfully built. Product binaries are available at /data/git/coreclr/binaries/Product/amd64/debug
耶!大功告成!
/data/git/coreclr/binaries/Product/amd64/debug# ls corerun libcoreclr.so libmscordaccore.so
【補充】
GitHub上已經有了專門的參考資料:Building and Running CoreCLR on Linux
文章列表