【转】搭建LLVM实验环境

周末在家里,把前一段时间略为作了一些研究的LLVM的文档翻出来又读了一下,一时兴

起,到llvm的官方站点 里下了llvm 2.3和 llvm-gcc 4.2,在本地搭了个llvm的实验环境。

基本的搭建步骤如下:

1。从llvm.org里下载下来llvm 2.3的source code

2。从llvm.org里下载下来llvm-gcc 4.2的source code ,在llvm的官方站点里也提供了

llvm-gcc 4.2在若干个平台上的binary版本,如果正好有自己平台相对应的binary文件,

就不需要下载llvm-gcc的源码进行手动编译安装的工作了

3。将llvm 2.3的源码包解压缩到指定目录,我是解压缩到

    /mnt/work/personal/open-source/LLVM/source-code/llvm-2.3 目录下

    然后

    cd /mnt/work/personal/open-source/LLVM/source-code/llvm-2.3

    ./configure

    make

    make install

   
    编译时间较长,在Ubuntu 8.04, T7250 Duo Core, 2G内存的本本上,大概花了半个

小时左右的时间。

4。将llvm-gcc 4.2的源码包解压缩到指定目录下,然后在跟该目录平级的地方 创建一个

OBJ 目录用来存放编译llvm-gcc 生成的目标文件。

如,我将llvm-gcc4.2解压缩到 LLVM/llvm-gcc4.2-2.3.source/ 目录下,所以需要在

LLVM 目录下再新建一个llvm-gcc-obj 的目录,用于存放llvm-gcc编译过程中生成的目标

文件。(注:直接在 llvm-gcc4.2-2.3.source 目录下编译会报错)

   cd llvm-gcc-obj/

   ../llvm-gcc4.2-2.3.source/configure --program-prefix=llvm- --enable-llvm=/mnt/work/personal/open-source/LLVM/source-code/llvm-2.3 --enable-languages=c,c++

    (其中program-prefix是用于确保编译生成的gcc工具的可执行文件名会有一个llvm-的前缀,而--enable-llvm则是指定步骤 3中编译llvm生成的目标文件的所在路径,确保llvm-gcc的编译过程中能够找到所需的llvm的目标文件)

    make

    make install


    编译过程大概也花了有将近二十分钟。

5。确保llvm-gcc工具和llvm工具的可执行程序所在路径已经加到了PATH 环境变量中

至此,llvm的实验环境已经搭建完毕。

现在我们可以使用刚刚搭建好的环境作一个小实验。

现在有如下内容的c++源文件test.cc

#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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值