可以转载,请注明出处!
1.获取源码
首先确保你的Linux系统是可以联网的,我是win10环境下的VMware 15 + centos 7,这个应该没影响,之所以说,是因为我之前用的vm12,使用centos7老是出问题,换了15之后就好了。
安装总共需要三个tar包,将其全部拖入到Linux环境下。其中cfe-6.0.0.src.tar.xz是clang的源码,compiler-rt-6.0.0.src.tar.xz是动态测试工具,llvm-6.0.0.src.tar是llvm的源码,这三个包官网都有,如果不想找的话,从我下面这个盘里面下载也是OK的。也可以从llvm-project的github仓库clone。
下载链接:https://pan.baidu.com/s/1pGTDJd7rGxD5vIxChNPP3Q
提取码:cbm1
1.1解压llvm-6.0.0.src.tar
在root权限的根目录下,创建一个名为llvmtest目录:
将llvm-6.0.0.src.tar移到llvmtest目录下,使用tar -xvf llvm-6.0.0.src.tar
命令解压文件到当前目录,并将解压好的文件重命名为llvm:
1.2解压cfe-6.0.0.src.tar.xz
步骤1.1中被解压出来命名为llvm的文件下有一个tools目录,将cfe-6.0.0.src.tar.xz移到其中,使用tar -xvf cfe-6.0.0.src.tar.xz
解压,并将解压后的文件重命名为clang:
1.3解压compiler-rt-6.0.0.src.tar.xz
步骤1.1中被解压出来命名为llvm的文件下有一个projects目录,将compiler-rt-6.0.0.src.tar.xz移动到其中,使用tar -xvf compiler-rt-6.0.0.src.tar.xz
命令解压,并重命名为compiler-rt:
1.4编译安装
首先确保你的Linux中有安装cmake。输入cmake -version
指令,查看你本机cmake的版本号,如果未出现版本号,直接跳到步骤3完成cmake的安装,然后再进行后续工作。我本机cmake安装的是3.15.1版本,已验证是可行的,如果你的当前cmake比这个版本低,建议安装3.15.1或者更高版本。
在步骤1.1中被解压出来命名为llvm的文件下新建一个名为llvm-build的目录,然后cd到该目录下,输入下面指令对llvm源码进行编译:
cmake -G "Unix Makefiles" -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=Release ../
-DLLVM_ENABLE_PROJECTS=‘clang’: 这个参数指明还要编译clang,也可以加入其它子项目。
-DCMAKE_BUILD_TYPE=Release: 在cmake里,有四种编译模式:Debug, Release, RelWithDebInfo, 和MinSizeRel。Debug相当于-g,Release相当于-O3, RelWithDebInfo相当于-O2 -g,MinSizeRel相当与-Os。
-DLLVM_TARGETS_TO_BUILD=‘X86’: 这个参数指定编译的目标平台,一般交叉编译的时候选用。
-DBUILD_SHARED_LIBS=On: 这个参数指定使用动态链接来链接LLVM的库,因为默认取值Off代表静态链接。
编译完成后输入make install
指令进行安装,这个过程比较久,可能要两三个小时;
至此环境已经搭建完成!
1.5环境检测
分别输入下面两条指令,如果出现图片中对应的信息,说明环境已安装成功:
llvm-config --version
clang --version
1.6用例测试
用C编写一个打印“hello word”的程序,程序名为hello.c,用clang进行编译。
hello.c内容:
用clang hello.c
或clang hello.c -o hello.out
或clang -emit-llvm -c hello.c -o hello.bc
指令编译,第一条编译完后会生成一个默认名为a.out的可执行文件,第二条会生成一个hello.out 可执行文件,第三条不会生成可执行文件,只将编译完的二进制文件存放在了hello.bc文件中:
使用上面第一条指令编译完成后会生成一个a.out的可执行文件,使用 ./a.out
指令执行:
使用llvm-dis hello.bc –o hello.ll
将hello.bc二进制文件转为llvm IR中间码:
2.gcc/g++安装
g++和gcc的安装可参考下面两个链接,先用第一链接中的安装方式,如果不可行,再用第二个链接中的方式。
https://blog.csdn.net/Betty2017/article/details/80953282
https://www.cnblogs.com/wanglijun/p/8605709.html
3.cmake安装
安装cmake要确保你本地Linux有安装gcc/g++。分别输入gcc --version
和g++ --version
指令,查看你本机gcc/g++的版本号,如果未出现版本号,直接跳到步骤2完成gcc/g++的安装。我本地安装的是4.8.5版本,已验证其是可行的,如果你的当前gcc/g++比这个版本低,建议安装4.8.5或者更高版本。
先在Linux环境下使用下面命令下载tar包:wget https://cmake.org/files/v3.15/cmake-3.15.1.tar.gz
然后参考下面链接完成安装即可:
https://www.cnblogs.com/cxscode/p/10980101.html