目录
概述
搭建CMake环境
搭建SVN环境
搭建Llvm环境
一、下载Llvm源码
二、下载Clang项目
三、下载 Compiler-RT
四、下载测试部分代码(可选 并且比较大)
五、离线下载相关包(可选)
六、创建build文件夹编译llvm源码
七、编译源码
八、查看是否安装成功
总结
概述
搭建Llvm源码编译环境,可以帮助我们后续学习Llvm源码和通过llvm库编译出的可执行文件来使用Llvm库。下面来带大家了解下Llvm源码环境的搭建方式。
搭建CMake环境
cmake的官网,https://cmake.org/download/
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTkpIemV6NzFrazdvemFXdFdrNjZSczhqMW4wNU8zU2tMU3BJZHhhQmhxUndIWnlZRVlqWTNoZy82NDA?x-oss-process=image/format,png)
下载的CMake版本必须大于 Version 3.4.3。(注如果系统中已经有CMake了通过 cmake -version 查看一下版本号 大于就不用下载了)
安装步骤执行如下操作:
- 解压 tar xzvf cmake-3.8.0-rc1.tar.gz;进入到解压目录 依次执行 ./bootstrap
- make
- make install
搭建SVN环境
如果系统中存在SVN,则忽略此步骤。
安装步骤执行如下操作:
-
sudo apt-get install subversion
搭建Llvm环境
为了演示,我把llvm安装在临时目录下(/tmp)
一、下载Llvm源码
安装步骤执行如下操作:
1. cd /tmp/llvm_install_demo
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTkRzNzZTY2Ixb1JXeWVuTk1Zd0xWS0VNd291OUI4bkFEd1NOemJyaEFoY1NVUlFySEZGQUxpY3cvNjQw?x-oss-process=image/format,png)
2. svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTklXbmNRVlF6azdyMXRWUVZES0hEaWJBeUJPTUFFTXNTaWE3dDl3d0xkYk9aSVpxMDBXZjZtdjFBLzY0MA?x-oss-process=image/format,png)
此步骤时间较慢
二、下载Clang项目
- cd /tmp/llvm_install_demo
- cd llvm/tools
- svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTnFXd3VPRWZLVTEydVdZM3VBeldsZkE3ZW0yRXJNdkxmU3BZWVE1bzBWUzFVaWI2eE9KSGdhRlEvNjQw?x-oss-process=image/format,png)
三、下载 Compiler-RT
- cd /tmp/llvm_install_demo
- cd llvm/projects
- svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTjNQN0N3cnBBbEc4WnJuQTFlZVFvYldtdVlOVGxVZ1d6WU5UWlpPczZzMjRPR0VBV2pSZ0d6QS82NDA?x-oss-process=image/format,png)
四、下载测试部分代码(可选 并且比较大)
- cd /tmp/llvm_install_demo
- cd llvm/projects
- svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
五、离线下载相关包(可选)
如果不是下载llvm主线的代码,并且是commiter的情况下,可以下载离线包,因为上述下载操作很慢,并且我们想使用的是已经修改了BUG,并且发布的版本。
下载地址如下:
https://releases.llvm.org
根据上述网址,可以下载想用的LLVM版本,LLVM3.3之前的版本与LLVM3.3之后的版本差异较大,根据自己的情况下载对应的版本。
六、创建build文件夹编译llvm源码
- cd /tmp/llvm_install_demo
- mkdir build
- cd build
- cmake -DCMAKE_INSTALL_PREFIX=/tmp/llvm_install_demo/pkg -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Debug ../
[1] DCMAKE_INSTALL_PREFIX 安装目录
[2] DLLVM_ENABLE_ASSERTIONS 是否编译Assert版本, 如果是Assert版本,在llvm库中assert断言会生效。
[3] DCMAKE_BUILD_TYPE 编译源码的类型,Release版本,Debug版本
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTlhYM01VVTlKVmNnaWNhbzRBZDlpY2xnVWlha1hBOXBwWEdkMUV2ZXdLdGNWeGhPMjZHa2xsbWNpYVEvNjQw?x-oss-process=image/format,png)
七、编译源码
1. make -j4
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTmtaRGRaclpDNDBnaG5uSjdHNUZ2Z1hPOTEzeEtkb2libnRTMFVqUDM5NWdwWk10UTJPemx6TlEvNjQw?x-oss-process=image/format,png)
2. make install
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTlI5SHVScEZKTUpvQk1XNWFpYVY4TzdHYmNkc0tjMG5IdUJRaDRtcUxlaWJqeVREVVdqbUdlOVVnLzY0MA?x-oss-process=image/format,png)
八、查看是否安装成功
1. 查看是否安装成功
<1> cd /tmp/llvm_install_demo/pkg
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTlZNaWJrOFUySGliSjJad2FOY1pPVGxGOGp6OFNqQzNTMnpXTWliWlpmSnFDQnczaE1SSHpxVk5wdy82NDA?x-oss-process=image/format,png)
2. 进入到bin目录下
<1> cd /tmp/llvm_install_demo/pkg/bin
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTmpQWjVzWGlheHRGcVh5bFNkcklSUUhCQUlGaWI4RGFKallkOGxadk5ZSHQxc1pBc0xtZDFoN09nLzY0MA?x-oss-process=image/format,png)
可以看到相应的可执行文件都产生了
3. 查看clang的版本
<1> cd /tmp/llvm_install_demo/pkg/bin
<2> ./clang --version
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zODNLYVgwdGIxbFYwSzl5U3huR2dWMFNzbE5hWkcwTlZMN0traWNpY0JnNmF0aWJTaWIxMFRuZzMzYXM0Y1huM2MyckQzWGljcG1vRndUYVh4NEExUmZTVHFBLzY0MA?x-oss-process=image/format,png)
经过上述步骤LLVM源码环境算是搭建完毕了。下面我们可以使用llvm。
总结
工欲善其事必先利其器,通过上述步骤我们已经搭建出了一个Llvm源码环境,下面开启我们学习Llvm之路吧。
分享大数据行业的一些前沿技术和手撕一些开源库的源代码
微信公众号名称:技术茶馆
微信公众号ID : Night_ZW