天天看點

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

    編譯過程大概也花了有将近二十分鐘。

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

上一篇: frontend badi
下一篇: Java 簡介

繼續閱讀