日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

在Linux CentOS上编译CoreCLR

發布時間:2025/3/19 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Linux CentOS上编译CoreCLR 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過幾天的努力,終于解決了在CentOS上編譯CoreCLR的問題。最終發現問題是CMAKE_C_FLAGS的設置引起的。

只要在“src/pal/tools/clang-compiler-override.txt”中刪除“SET (CMAKE_C_FLAGS_INIT "-Wall -std=c11")?”,在“src/pal/tests/CMakeLists.txt”中添加“SET (CMAKE_C_FLAGS "-Wall -std=c11")”,就能編譯了。(更新:后來找到一個更好的解決方法:只需要將-std=c11改為-std=gnu11)?

下面分享一下在CentOS上編譯CoreCLR的操作步驟。

所用的CentOS版本7.0。

1)下載llvm的源代碼

wget http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz mv llvm-3.5.0.src llvm

2)下載clang的源代碼

cd llvm/tools wget http://llvm.org/releases/3.5.0/cfe-3.5.0.src.tar.xz tar xf cfe-3.5.0.src.tar.xz mv cfe-3.5.0.src clang

2+)下載lldb的源代碼及安裝相關組件

wget http://llvm.org/releases/3.5.0/lldb-3.5.0.src.tar.xz tar -xf lldb-3.5.0.src.tar.xz mv lldb-3.5.0.src lldb yum install swig python-devel libedit-devel

3)下載compiler-rt的源代碼

cd ../projects wget http://llvm.org/releases/3.5.0/compiler-rt-3.5.0.src.tar.xz tar xf compiler-rt-3.5.0.src.tar.xz mv compiler-rt-3.5.0.src compiler-rt

4)下載libcxxabi的源代碼

wget http://llvm.org/releases/3.5.0/libcxxabi-3.5.0.src.tar.xz tar -xf libcxxabi-3.5.0.src.tar.xz mv libcxxabi-3.5.0.src.tar.xz libcxxabi

5)下載libcxx的源代碼

wget http://llvm.org/releases/3.5.0/libcxx-3.5.0.src.tar.xz tar xf libcxx-3.5.0.src.tar.xz mv libcxx-3.5.0.src libcxx

6)配置編譯選項

cd .. ./configure --enable-optimized CC=gcc CXX=g++

7)編譯llvm

make -j2

8)安裝編譯好的llvm

make install

(如果只安裝lldb,只需進入llvm/tools/lldb中運行make install)

9)簽出CoreClr的源代碼進行編譯

git clone https://github.com/dotnet/coreclr.git cd coreclr ./build.sh

10)安裝libunwind

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz tar -xf libunwind-1.1.tar.gz cd libunwind-1.1 ./configure make make install

如果不安裝libunwind會出現下面的錯誤:

/data/git/coreclr/src/pal/src/exception/seh-unwind.cpp:32:10: fatal error: 'libunwind.h' file not found

10)解決"Native context type is not known"編譯錯誤

編譯過程中出現如下的錯誤:

-- Check size of siginfo_t -- Check size of siginfo_t - failed -- Check size of ucontext_t -- Check size of ucontext_t - failed ... [ 0%] Building CXX object src/palrt/CMakeFiles/palrt.dir/bstr.cpp.o In file included from /data/git/coreclr/src/pal/src/arch/i386/context.cpp:25: /data/git/coreclr/src/pal/src/include/pal/context.h:40:2: error: Native context type is not known on this platform!

修改?src/pal/tools/clang-compiler-override.txt?文件,去掉?SET (CMAKE_C_FLAGS_INIT "-Wall -std=c11")?可以解決這個問題。

(更新:后來找到一個更好的解決方法:只需要將-std=c11改為-std=gnu11)

10)解決"use of undeclared identifier"編譯錯誤

繼續編譯過程中出現如下的錯誤:

/data/git/coreclr/src/pal/tests/palsuite/c_runtime/wprintf/test2/test2.c: 31:15: error: use of undeclaredidentifier 'u'DoStrTest(u"foo %s", u"bar", u"foo bar");

在?src/pal/tests/CMakeLists.txt?中添加?SET (CMAKE_C_FLAGS "-Wall -std=c11")?可以解決這個問題。

(更新:后來找到一個更好的解決方法:只需要將-std=c11改為-std=gnu11)

11)大功告成

Repo successfully built. Product binaries are available at /data/git/coreclr/binaries/Product/amd64/debug

總結

以上是生活随笔為你收集整理的在Linux CentOS上编译CoreCLR的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。