Ubuntu下安装clang和libc++

最后都变了- 提交于 2021-01-29 09:14:46

最近在跑别人代码(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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!