Ubuntu下安装clang和libc++
最近在跑别人代码(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