对于像我这样的菜鸟来说,在linux中安装安装一个编译器总要有人手把手才行。本来准备今天装好llvm在
linux中的实验环境,然后晚上看资料开始写 一个简单的编译器练练手的,但是折腾到现在才搞定。我把能
google到的东西全google了,但是发现还是没有手把手交如何搭环境的,博客里有一篇 转载的llvm2.3版本的
安装指南,但是感觉不是很细,我用的是2.6版本的,跟着做了,但是还是出现了很多问题,之后靠着我一点点
看报错信息然后 增改东西才搞定的。下面我把在ubuntu中搭建 llvm 2.6的步骤简单说一下吧(我用的是
ubuntu 9.10,不过这个应该关系不大):
安装llvm之前必备的编译器要有gcc、bison、flex。
没有的话用apt-get命令来获取:
sudo apt-get install gcc
sudo apt-get install bison
sudo apt-get install flex
安装完这三者之后,我们开始安装llvm 2.6
1. 将llvm 2.6的源码包解压缩到指定目录,我是解压缩到
/mnt/LLVM/source-code/llvm-2.6 目录下
然后 sudo ./config
ps.我之前没有安装gcc,结果会报错说没有安装gcc
sudo cd /mnt/LLVM/source-code/llvm-2.6
sudo ./configure
sudo make (不安装bison和flex这里会报错)
sudo make install
2.由于2.6版本里提供了 比较完善的llvm-gcc binaries包,所以一般来讲不用自己再去安装了,只要将包里相应的内容拷贝到/usr/local中的相关文件夹内就可以了。拷贝时,可以使用sudo cp -r 源文件夹或文件路径 目标文件夹或文件路径。
这样基本就ok了。可以简单的测试一下llvm-gcc是否装好。
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
printf( "hello, the world/n" );
cout << "this from C++" << endl;
return 0;
}
测试步骤:
1。llvm-g++ test.cc -emit-llvm -c -o test.bc
调用llvm-g++的编译前端为test.cc生成相应的LLVM bit code 文件。
我们也可以在调用llvm-g++的过程中添加上一些额外的选项,如
llvm-g++ --verbose test.cc -emit-llvm -c -o test.bc
加上--verbose 以确认llvm-g++前端在编译过程中使用的是正确的头文件
llvm-g++ -S test.cc --emit-llvm
加上 -S 选项,生成 LLVM的汇编格式文件。
2。基于步骤1生成的bit code文件,我们可以调用lli 来对其解释执行
lli ./test.bc
3。基于步骤1生成的bit code文件,我们可以调用llvm-dis 来进行反汇编
llvm-dis < test.bc
4。基于步骤1生成的bit code文件,我们还可以调用llc 来为其生成本地的汇编
文件
llc test.bc -o test.s
5。最后我们可以调用本地g++编译器为test.s生成本地机器码并执行之。
g++ test.s -o test.native
./test.native
注:上述部分内容来自《 搭建LLVM实验环境 》一文!