最近在跑別人代碼(Makoto Miwa - Relation Extraction)的時候需要用到clang++,所以需要在Ubuntu上安裝一下clang++。轉載自:算法時空
選擇版本
之前推薦的是當前版本trunk,但是有時它在不斷更新,所以最好還是選擇特定版本,這里我們選擇clang 5.0最終版,那么官網指南中可將trunk改成tags/RELEASE_500/final。
例如:
http://llvm.org/svn/llvm-project/llvm/trunk
可以改成:
http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final
步驟
- 安裝必要的包:
1 sudo apt install subversion 2 sudo apt install cmake
- 建立目錄(這里取名為
CL):
1 cd ~ 2 sudo mkdir CL 3 cd CL
- 下載
llvm:
1 svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final llvm
- 下載
clang:
1 cd llvm/tools 2 svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_500/final clang 3 cd ../..
- 下載
clang工具(可選)
1 cd llvm/tools/clang/tools 2 svn co http://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_500/final extra 3 cd ../../../..
- 下載
Compiler-RT(可選)
1 cd llvm/projects 2 svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_500/final compiler-rt 3 cd ../..
- 下載標准庫
libcxx(絕對要下載)還有libcxxabi(千萬不要遺漏):
1 cd llvm/projects 2 svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_500/final libcxx 3 svn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_500/final libcxxabi 4 cd ../..
- 編譯安裝
1 mkdir build 2 cd build
注意將默認的Debug模式換成Release模式.
1 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm 2 make 3 sudo make install
- 可以用了!
- 測試一下
1 clang++ --help
- 基於
c++11使用libc++編譯x.cpp並執行a.out
1 clang++ -std=c++11 -stdlib=libc++ x.cpp 2 .\a.out
- 驗證
x.cpp的正確性
1 clang x.cpp -fsyntax-only
- 輸出
x.cpp未優化的LLVM代碼
1 clang x.cpp -S -emit-llvm -o -
- 輸出
x.cpp經過O3優化的LLVM代碼
1 clang x.cpp -S -emit-llvm -o - -O3
- 輸出
x.cpp的原生機器碼
1 clang x.cpp -S -O3 -o -
折騰
安裝完畢之后, 如果不嫌麻煩的話, 可以用clang再編譯安裝一次:
1 CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm
