llvm學習(二)————llvm編譯與環境構建

本文由博主原創,轉載請註明出處(保留此處和鏈接):

IT人生http://blog.csdn.net/robinblog/article/details/17339027



llvm官方資料:

         在2011十月份的時候,有人向我推薦有關llvm的資料,主要是下面三個鏈接:

        1. http://llvm.org/docs/GettingStarted.html

        2. http://llvm.org/docs/LangRef.html

        3. http://llvm.org/docs/WritingAnLLVMPass.html

        最近重新拾回來有點五味雜瓶,不知道說什麼好了,在此說一下llvm工程的構建吧,參考上面鏈接1

svn獲取最新llvm,並編譯:

        其實鏈接1Getting Started Quickly (A Summary)  已經說的很清楚了,在此算作翻譯。

        1.確認自己的工作目錄,在此默認目錄爲:

robin@ubuntu:~/workspace/llvm_wspace$
        2.在llvm官網,默認使用svn提供最新llvm版本下載,而且目前最新爲llvm-3.4,所以在此新建llvm-.3.4目錄:

$ mkdir llvm-3.4/
        3.進入目錄llvm-3.4 :

$ cd llvm-3.4/
        4.開始在llvm-3.4目錄下獲取llvm源碼:

$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

        5. 進入目錄llvm/tools:

$ cd llvm/tools/
        6.開始在llvm/tools/目錄下獲取clang前端源碼:

$ svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

        7.進入目錄llvm/projects:

$ cd ../../llvm/projects
        8.開始在llvm/projects目錄下獲取Compiler-RT源碼:

$ svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
        9.開始在llvm/projects目錄下獲取Test Suite源碼(下載過程比較漫長,test-suite下載是可選的,也就是說,在此可以不下載):

$ svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite

        10.進入目錄llvm-3.4,新建build目錄:

$ cd ../../
$ mkdir build

到此爲止,我們的robin@ubuntu:~/workspace/llvm_wspace/llvm-3.4$目錄下,含有llvm 和 build兩個目錄:

robin@ubuntu:~/workspace/llvm_wspace/llvm-3.4$ ls
build  llvm
        11. 好了,我們準備工作已經做完,可以開始編譯llvm的工程了。編譯llvm有congfigure和cmake兩種方法,llvm官網使用的是configure方法,本人在此選擇CMake吧。CMake優點

進入build目錄:

$ cd build/
執行如下cmake命令:(注意:llvm-3.4需要CMake 2.8.8及以上版本編譯)

$ cmake -DCMAKE_INSTALL_PREFIX=_install/ ../llvm/

執行make和make install命令:

$ make && make install



獲取自己需要的Release版本,並編譯:

llvm各種Release版本 的下載鏈接爲:http://llvm.org/releases/download.html

        打開該鏈接,我們我們就會看到LLVM 3.3及其較低版本的Release,在此以LLVM3.3爲例。

        和svn需要下載的一樣,我們分別下載:Clang source codeLLVM source codeCompiler RT source codeLLVM Test Suite(可以不下載)。

和svn的第1,2,3步一樣,只是我們在robin@ubuntu:~/workspace/llvm_wspace$ 下建立llvm-3.3目錄:

robin@ubuntu:~/workspace/llvm_wspace$ mkdir llvm-3.3/
robin@ubuntu:~/workspace/llvm_wspace$ cd llvm-3.3/
把我們上面下載的四個文件放置到llvm-3.3目錄下,並解壓:

robin@ubuntu:~/workspace/llvm_wspace/llvm-3.3$ ls
cfe-3.3.src.tar.gz compiler-rt-3.3.src.tar.gz llvm-3.3.src.tar.gz test-suite-3.3.src.tar.gz

解壓後,得到文件如下:

robin@ubuntu:~/workspace/llvm_wspace/llvm-3.3$ ls
cfe-3.3.src cfe-3.3.src.tar.gz compiler-rt-3.3.src compiler-rt-3.3.src.tar.gz  llvm  llvm-3.3.src.tar.gz  test-suite-3.3.src  test-suite-3.3.src.tar.gz

然後構建llvm工程的目錄結構,在此構建如svn方式的結構: 

1.重命名llvm-3.3.src爲llvm:

$ mv llvm-3.3.src/ llvm/

2.重命名 cfe-3.3.src爲clang: 

$ mv cfe-3.3.src/ clang/

3.重命名 compiler-rt-3.3.src 爲 compiler-rt:

$ mv compiler-rt-3.3.src/ compiler-rt/

4.重命名 test-suite-3.3.src 爲 test-suite:

$ mv test-suite-3.3.src/ test-suite/

5. 把clang/ 移動到llvm/tools/下: 

$ mv clang/ llvm/tools/

6.把 compiler-rt/ 移動到llvm/projects/下: 

$ mv compiler-rt/ llvm/projects/

7.把test-suite/ 移動到 llvm/projects/下:

$ mv test-suite/ llvm/projects/

8.到此爲止,我們已經構建好llvm-3.3的目錄結構了,現在重複上面svn版本的第10和11步來編譯就可以了(要把對應的llvm3.4改爲3.3哦)。

注意:我在使用第8步編譯llvm-3.3時,遇到了下面問題:

Q1:

make[2]: *** No rule to make target `lib/Target/AArch64/AArch64GenSubtargetInfo.inc', needed by `lib/Target/AArch64/Utils/CMakeFiles/LLVMAArch64Utils.dir/AArch64BaseInfo.cpp.o'.  Stop.
make[1]: *** [lib/Target/AArch64/Utils/CMakeFiles/LLVMAArch64Utils.dir/all] Error 2
make: *** [all] Error 2
A1:

當遇到這個問題時,我們需要重新來執行命令llvm-3.3/build$ cmake -DCMAKE_INSTALL_PREFIX=_install/ ../llvm/ (注意,這裏要保留上次在build下生成的文件),第二次cmake之後,我們再來執行make  && make install 就可以了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章