LLVM、Clang安装及测试
写在最前
如果安装过程中出现源的问题,进入Ubuntu Software Center - Edit - Software Sources - Ubuntu Software - Download From, 修改源,然后使用sudo apt-get update
命令更新源。
为了避免后续出现小问题,首先还是更新源吧。
1 | $ sudo apt-get update |
参考文档(若不想看英文,可跳过)
安装相关
Getting Started with the LLVM System:
LLVM: Getting Started Quickly (A Summary)
LLVM: Requirements
CMake
必要的包
1.cmake, version 3.6 and higher.
1 | $ sudo apt-get install cmake |
2.gcc and gcc-c++, version 4.8 and higher.
1 | $ sudo apt-get build-dep gcc` 或 `sudo apt-get install build-essential` |
3.binutils, including ld, ar and etc.
4.subversion.
1 | $ sudo apt-get install subversion` |
选择版本
之前推荐的是当前版本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.建立目录
1 | cd ~ |
2.下载llvm, 选择5.0.0版本的llvm
1 | $ svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final llvm |
3.下载clang, 选择5.0.0版本的clang
1 | $ cd llvm/tools |
4.安装额外的clang工具,可选
1 | $ cd llvm/tools/clang/tools |
5.安装Compiler—RT,可选
1 | $ cd llvm/projects |
【安装其他可选项,可参考http://clang.llvm.org/get_started.html】
6.安装标准库libcxx及libcxxabi:
1 | $ cd llvm/projects |
编译
1.建立目录
1 | mkdir build |
2.注意将默认的Debug模式换成Release模式.
[Debug版本大概20多个G,选择Release版本]
1 | $ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm |
修改环境变量
修改/etc/profile文件,添加环境变量
1 | $ sudo gedit /etc/profile |
打开配置文件后给PATH添加路径:
export LLVM_HOME=/opt/LLVM
export PATH=${PATH}:${LLVM_HOME}/build/bin
测试安装正确性
1 | $ clang -version |
测试
可参考An Example Using the LLVM Tool Chain
测试1
1.创建test.c文件
1 |
|
2.编译可执行文件
1 | $ clang test.c -o test |
3.生成LLVM字节码文件
1 | $ clang -03 -emit-llvm test.c -c -o test.bc |
4.生成LLVM可视化字节码文件
1 | $ clang -03 -emit-llvm test.c -S -o test.ll |
5.运行可执行文件
./test
6.运行字节码文件
1 | $ lli test.bc |
7.反汇编字节码文件
1 | $ llvm-dis < test.bc | less |
8.编译字节码文件为汇编文件
1 | $ llc test.bc -o test.s |
测试2
1.基于c11使用libc编译x.cpp并执行a.out
1 | $ clang++ -std=c++11 -stdlib=libc++ x.cpp |
2.验证x.cpp的正确性
1 | $ clang x.cpp -fsyntax-only |
3.输出x.cpp未优化的LLVM代码
1 | $ clang x.cpp -S -emit-llvm -o - |
4.输出x.cpp经过O3优化的LLVM代码
1 | $ clang x.cpp -S -emit-llvm -o - -O3 |
5.输出x.cpp的原生机器码
1 | $ clang x.cpp -S -O3 -o - |
折腾
由于第一次安装没有考虑很多,将LLVM目录建在系统/opt目录下,然后进行了编译,导致很多时候出现权限问题,于是决定将LLVM换个目录。
1.更换目录
原始目录/opt/LLVM,包含build及llvm两个文件夹
目标目录/home/katherine/LLVM
1 | $ sudo mv /opt/LLVM /home/katherine/LLVM |
2.重新编译
首先删除build目录下的所有内容
然后使用sudo cmake(与之前编译不同,此处有sudo,当然你可以试试不用sudo会出现什么问题)
1 | $ sudo cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm |
重新编译。此时终端没有其他任务,使用nproc
参数,所有的核都会用于开启多线程进行编译。如果有其他任务的话,直接make
。
如果你的电脑有8核,那么可以使用make -j8
来进行编译。
- 本文链接:http://katherineleeyq.cn/2017/10/19/LLVM、Clang安装及测试/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!