安裝LLVM+Clang教程
目錄
前言
最近可能要學習編譯器相關的知識,因此總結一下LLVM的安裝方法,以防忘記如何安裝。
接下來就是正式的安裝過程了。。。
------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------
一、LLVM簡介
LLVM是Low Level Virtual Machine 的縮寫,它源自於伊利諾伊大學的一個開源研究專案,旨在提供一種現代化的編譯機制,使得對於任何的語言既可以做到靜態編譯也可以動態編譯,並且非常高效。後來LLVM孵化了很多的子專案,例如:Clang,LLDB,OpenMP等。
靜態編譯:編譯器在編譯可執行檔案時,把需要用到的對應動態連結庫(.so或.ilb)中的部分提取出來,連結到可執行檔案中 去,使可執行檔案在執行時不需要依賴於動態連結庫。
動態編譯:動態編譯的可執行檔案需要附帶一個的動態連結庫,在執行時,需要呼叫其對應動態連結庫中的命令。所以其 優點一方面是縮小了執行檔案本身的體積,另一方面是加快了編譯速度,節省了系統資源。缺點一是哪怕是很 簡單的程式,只用到了連結庫中的一兩條命令,也需要附帶一個相對龐大的連結庫;二是如果其他計算機上沒 有安裝對應的執行庫,則用動態編譯的可執行檔案就不能執行。
LLVM由三部分組成:
第一部分是LLVM套件,它包含有LLVM所需的所有工具、庫函式、和標頭檔案,彙編器、反彙編器、bitcode(一種中間程式碼)分析器和優化器,以用來測試LLVM和Clang前端的基本回歸測試。
第二部分是Clang前端,它將C/C++,Object C和Object C++程式碼編譯成LLVM的中間程式碼(bitcode),一旦編譯成LLVM bitcode,就可以使用LLVM的套件中的LLVM工具來進行操作了。
第三部分是測試集合,這是一個可選部分。它是一套能用來進一步測試LLVM功能和效能的程式。
二、LLVM+Clang的安裝
準備工作
LLVM官方是用svn進行版本控制的,因此我們需要安裝svn來獲取原始碼。
安裝過程中會用到cmake工具來生成Makefile,需要先安裝cmake。
sudo apt-get install subversion
sudo apt-get install cmake
構建安裝目錄
#建立一個目錄用來存放llvm原始碼
mkdir /tmp/llvm_source_build
下載LLVM核心原始碼
#下載llvm程式碼
cd /tmp/llvm_source_build
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
此時在/tmp/llvm_source_build目錄下就會有一個llvm目錄。
下載Clang原始碼
在/tmp/llvm_source_bulid/llvm/tools目錄下下載clang。
#下載Clang原始碼
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
下載 Clang 工具原始碼(可選)
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
下載Compiler-RT 原始碼(可選)
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
還有一系列的可選項可以下載安裝,這些並不主要,若需要可以檢視參考文獻2。
配置和安裝LLVM+Clang
首先返回到/tmp/llvm_source_build目錄下,新建一個build目錄。
#新建build目錄
cd /tmp/llvm_source_build
mkdir build
使用之前安裝的cmake得到Makefile檔案
cd /build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_INSTALL_PREFIX=/opt/llvm ../llvm
上面的-CMAKE_INSTALL_PREDIX=/opt/llvm 表示要安裝的目錄。
得到Makefiile檔案之後幾可以進行編譯和安裝了
make -j 8
sudo make install
最後還需要配置一下環境變數。
#配置一下環境變數
vim /etc/profile
#在末尾新增
export PATH=$PATH:/opt/llvm/bin
參考文獻: