美文网首页开发环境搭建未名
手把手教你在Ubuntu下安装clang和libc++

手把手教你在Ubuntu下安装clang和libc++

作者: 算法时空 | 来源:发表于2017-03-18 23:14 被阅读9136次

    本文主要针对需要在Ubuntu下用clanglibc++标准库学习C++的同学. 操作系统是Ubuntu 16.10的64位版.

    选择版本

    之前推荐的是当前版本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

    步骤

    • 安装必要的包:
    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/tags/RELEASE_500/final llvm
    
    • 下载clang:
    cd llvm/tools
    svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_500/final clang
    cd ../..
    
    • 下载clang工具(可选)
    cd llvm/tools/clang/tools
    svn co http://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_500/final extra
    cd ../../../..
    
    • 下载Compiler-RT(可选)
    cd llvm/projects
    svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_500/final compiler-rt
    cd ../..
    
    • 下载标准库libcxx(绝对要下载)还有libcxxabi(千万不要遗漏):
    cd llvm/projects
    svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_500/final libcxx
    svn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_500/final 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
    

    后续步骤同上:-)

    主要参考文献

    http://clang.llvm.org/get_started.html
    http://libcxx.llvm.org/docs/BuildingLibcxx.html
    http://libcxx.llvm.org/docs/UsingLibcxx.html
    http://llvm.org/docs/GettingStarted.html
    http://llvm.org/docs/CMake.html

    算法时空

    相关文章

      网友评论

      本文标题:手把手教你在Ubuntu下安装clang和libc++

      本文链接:https://www.haomeiwen.com/subject/foclnttx.html