您的位置:首页 > 其它

源码编译安装 clang

2015-11-08 14:38 183 查看
参考文章
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 可以用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: