参考文章

https://solarianprogrammer.com/2013/01/17/building-clang-libcpp-ubuntu-linux/

http://blog.csdn.net/heartszhang/article/details/17652461



安装好 ubuntu 后,打开终端, 依次输入下面几条命令

1.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install g++ subversion cmake



2.

从 http://llvm.org/releases/download.html 下载 LLVM ,CLANG,libc++, libcxxabi 的最新版本源码

并分别解压缩到下面 3 个( 新建的 )目录
~/llvm

~/llvm/tools/clang

~/Clang/libcxx

~/libcxxabi



3.
编译链接 llvm 和 clang

cd ..
cd ..
mkdir build && cd build

../llvm/configure --prefix=/usr/clang_3_4 --enable-optimized --enable-targets=host --disable-compiler-version-checks

make -j 8


4.
安装 clang
sudo make install

安装完毕后, usr 目录下生成了 clang_3_4 目录

把 clang 目录加入系统路径

打开 .bashrc 文件,
cd ~
gedit ~/.bashrc
. .bashrc

在最后加上
export PATH=/usr/clang_3_4/bin:$PATH



5.
编译并安装 libc++

编译 libc++ 时需要包含系统C++编译器和目标平台的路径
在终端中输入下面语句来获取路径信息

echo | g++ -Wp,-v -x c++ - -fsyntax-only

输入后终端显示下面14行文字信息

1 ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/4.8"
2 ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
3 ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
4 #include "..." search starts here:
5 #include <...> search starts here:
6 /usr/include/c++/4.8
7 /usr/include/x86_64-linux-gnu/c++/4.8
8 /usr/include/c++/4.8/backward
9 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
10 /usr/local/include
11 /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
12 /usr/include/x86_64-linux-gnu
13 /usr/include
14 End of search list.

第 6 行和第 7 行就是需要的路径信息


编译 libc++

在终端中输入下面几行命令

cd ~/Clang
mkdir build_libcxx && cd build_libcxx

CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DLIBCXX_CXX_ABI=libsupc++ -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.8/;/usr/include/x86_64-linux-gnu/c++/4.8" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr $HOME/Clang/libcxx

make -j 8
sudo make install


6.

编译 libc++abi

cd libcxxabi/lib

./buildit

sudo cp libc++abi.so.1.0 /usr/lib/libc++abi.so.1.0

cd /usr/lib

sudo ln -s libc++abi.so.1.0 libc++abi.so.1

sudo ln -s libc++abi.so.1 libc++abi.so




测试 clang

现在可以使用下面的编译命令来编译 C++11 的代码了

clang++ -std=c++11 -stdlib=libc++ <your_program_name>

新建一个 example_001.cpp 文件, 内容如下:

//Program to test the new C++11 lambda syntax
#include <iostream>

using namespace std;

int main()
{
    cout << [](int m, int n) { return m + n;} (2,4) << endl;
    return 0;
}

在终端中输入:
clang++ -std=c++11 -stdlib=libc++ -lc++abi example_001.cpp -o example_001

如果能编译通过并生成 example_001, 就表示 clang 可以用了


Logo

更多推荐