本文主要针对需要在Ubuntu下用clang和libc++标准库学习C++的同学. 操作系统是Ubuntu 16.10的64位版.
步骤
安装必要的包:
sudo apt install subversion
sudo apt install cmake
建立目录(这里取名为CL):
cd ~
sudo mkdir CL
cd CL
下载llvm:
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
下载clang:
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../..
下载clang工具(可选)
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
cd ../../../..
下载Compiler-RT(可选)
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
下载标准库libcxx(绝对要下载)还有libcxxabi(千万不要遗漏):
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
cd ../..
编译安装
mkdir build
cd build
注意将默认的Debug模式换成Release模式.
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm
make
sudo make install
可以用了!
测试一下
clang++ --help
基于c++11使用libc++编译x.cpp并执行a.out
clang++ -std=c++11 -stdlib=libc++ x.cpp
.\a.out
验证x.cpp的正确性
clang x.cpp -fsyntax-only
输出x.cpp未优化的LLVM代码
clang x.cpp -S -emit-llvm -o -
输出x.cpp经过O3优化的LLVM代码
clang x.cpp -S -emit-llvm -o - -O3
输出x.cpp的原生机器码
clang x.cpp -S -O3 -o -
折腾
安装完毕之后, 如果不嫌麻烦的话, 可以用clang再编译安装一次:
CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm
后续步骤同上。