文章出處

>>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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()