一份關於各種安裝LLVM的方法的總結
這是一篇可能會持續更新的部落格,我想把安裝LLVM的方法都列出來,以便於自己的查閱,也希望能對需要的朋友有所幫助。
這裡面參考了很多前輩的資料,也有自己的摸索總結,前輩們的連結我會老老實實地在文章中貼好~(搓手手)
另:寫這篇部落格的前半年安裝的llvm,在寫這篇部落格的時候,沒有很多實時的截圖,很多是當時安裝的文字記錄,有機會補圖上來。
其中若有錯誤紕漏歡迎大家留言指正,我會及時更正。
首先貼一些基礎的參考連結:
官網主頁:http://llvm.org
中文官網主頁:https://www.llvm.org.cn LLVM的首頁被翻譯成了中文,首頁中的很多連結裡面的內容還是英文的。
官網提供的安裝方法:http://clang.llvm.org/get_started.html
一、【方法一 】從LLVM官網下載預編譯好的包
1. 在官網主頁的左邊欄有下載連結:
點選“All Release”可以看到所有LLVM版本的下載列表。http://releases.llvm.org
從左到右,各列分別對應版本的釋出時間、版本號、下載連結、釋出說明(包含一些更新的資訊)、開發文件
在查閱開發文件時,最好是檢視下載的版本對應的文件,會獲得準確的資訊
2. 選擇好版本之後,點選版本號後面的download,在Pre-Built Binaries下面,根據相應的作業系統下載不同的預編譯檔案。
mac系統下載第一個Clang for Mac OS X(.sig),ubuntu系統根據具體情況下載Clang for x86_64 Ubuntu XXX(.sig).
3. 下載之後解壓到一個目錄下,解壓後的資料夾下包含bin,include,lib,libexec,share資料夾
將bin資料夾新增進環境變數
環境變數的新增可參考的連結很多,比如參照連結:https://www.cnblogs.com/shineqiujuan/p/4693404.html
在ubuntu下環境變數新增方法:
將下載的預編譯包解壓(clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04)放在home目錄下,
在ubuntu中新增環境變數的命令:
sudo gedit /etc/profile
新增以下兩行命令:
export LLVM_HOME=/home/xxx(your usrname)/clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04/bin
export PATH=$LLVM_HOME:$PATH
當然,如果覺得clang+llvm-5.0.1-x86_64-linux-gnu-ubuntu-14.04太長,改一個短一些的可識別的資料夾的名字即可。
在mac下環境變數新增方法之一:(單個使用者設定)
在命令列中,執行以下命令:
touch ~/.bash_profile 建立
vim ~/.bash_profile 開啟並編輯
點一下向下箭頭,點E 進入bash_profile檔案
點i進入編輯模式,進行編輯
編輯完成後,點esc 退出
直接輸入 ::wq! 這四個字元後,回車
一般環境變數修改後,重啟後生效,如果想立即生效,執行:
source ~/.bash_profile
4.下載cmake
ubuntu下載cmake直接:sudo apt install cmake
配置cmake環境變數
mac上是:export PATH=/Applications/CMake.app/Contents/bin:$PATH
5.通過以上步驟,簡單的llvm使用基本上就沒問題了。
二、【方法二】根據LLVM官網教程編譯原始碼進行安裝(Unix-like System)
安裝方法連結:http://clang.llvm.org/get_started.html
或者這個連結:http://llvm.org/docs/GettingStarted.html
按照官網步驟來即可,以下的內容是翻譯和少許採坑補充:
Overview概述
歡迎使用LLVM!為了開始上手,你首先需要知道以下的一些基礎資訊。
首先LLVM是由三部分組成的。LLVM suite + Clang front end + Test suite(optional)
- LLVM suite包含使用LLVM時所需要的:工具(tools),庫(libraries),標頭檔案(header files),還包含一個assembler,disassembler,bitcode analyser,bitcode optimizer,也包含基本的迴歸測試regression tests,用於測試LLVM工具和Clang前端。
- Clang front end負責將 C, C++, Objective C, and Objective C++ 程式碼編譯成LLVM的bitcode(一種中間程式碼)。一旦被編譯成LLVM的bitcode,程式就能被LLVM suite中的LLVM工具所操作。
- Test Suite擁有一個testing harness,可以用於對LLVM的功能和效能進行更多的測試。
Getting Started Quickly 快速開始(命令列安裝教程)
http://clang.llvm.org/get_started.html這個連結中的Getting start更新會及時一些。
1.讀文件
2.讀文件
3.兩次提醒讀文件
4.Checkout LLVM
cd where-you-want-llvm-to-live(新增一個你想放置LLVM的路徑)
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
5.Checkout Clang
cd where-you-want-llvm-to-live (跟4中相同的LLVM的路徑)
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
6.Checkout Extra Clang Tools [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/tools/clang/tools
svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
7.Checkout LLD linker [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/lld/trunk lld
8.Checkout Polly Loop Optomizer [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/polly/trunk polly
9.Checkout Compiler-RT(Required to build the sanitizers) [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
10.Checkout Libomp(required for OpenMP support) [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
11.Checkout libcxx and libcxxabi [不是必須的,可選]
cd where-you-want-llvm-to-live(跟4中相同的LLVM的路徑)
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
12.Get the Test Suite Source Code [不是必須的,可選]
cd where-you-want-llvm-to-live
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
【注】:svn中checkout的意思是“遷出”,把程式碼從程式碼庫下載到本地。
build=compile+link,build中文意思可以理解為“編譯連結”或一個籠統的“構建”
13.配置和構建(build)LLVM和Clang
需要使用cmake工具,在此之前需要確認已經有必要的所有的原始碼,在cmake的build過程中不會允許新增原始碼目錄。
LLVM需要CMake3.4.3及以上版本來build,通常建議使用最新版本的CMake,特別是在生成Ninja的build檔案的時候。因為Ninja的生成器(generator)與CMake的生成器(generator)有很大的關聯。
CMake的安裝、使用指南參見http://llvm.org/docs/CMake.html。
安裝CMake之後需要為CMake配置環境變數,便於CMake在命令列中能夠使用。
不能夠在LLVM的原始碼目錄下build,這是不支援的。必須新建一個build目錄,在這個目錄下完成13的操作。
操作步驟如下:
-
cd where you want to build llvm
-
mkdir build
-
cd build
-
cmake -G <generator> [options] <path to llvm sources>
-
make -j4
其中<generator>有以下選項:(也就是可以把<generator>這一坨,替換為以下選項之一)
- Unix Makefiles 用於生成相容的parallel makefiles
- Ninja 用於生成Ninja的build檔案。大部分的llvm開發者都使用Ninja.(也就是說LLVM官方文件建議使用Ninja生成)
- Visual Studio 用於生成Visual Studio的工程和解決方案
- Xcode 用於生成Xcode工程
其中[options]可以不寫,如果要寫的話,有以下選項:
- -DCMAKE_INSTALL_PREFIX=directory 等號後面的“directory”表示需要寫清楚你想要LLVM tools和libraries安裝在哪個路徑下,預設路徑是/usr/local
- -DCMAKE_BUILD_TYPE=type 等號後面的“type” 可以填:Debug或Release或RelWithDebInfo或MinSizeRel。預設值是Debug(這裡實際一般選Release,Debug版本太大)
- -DCMAKE_ENABLE_ASSERTIONS=on 在編譯時開啟斷言檢查,預設開啟後只對Debug版本有用,對其他build版本無用
其中make工具的說明:
- make 後面不填任何選項的話,是預設build整個LLVM工程
- make 後面新增“check-all”,即 make check-all的話,會執行迴歸測試(regression tests)保證所有按順序工作
- CMake會為每個工具和庫生成build target,並且很多LLVM的子工程(sub-projects)會生成自己的check-<project>的target
- 執行一條build的話會很慢(是非常非常慢,親身試過),一定要使用parallel build的方式執行,對於make工具來說,用make -j.(make -4j)
如果在build的過程中,遇到了“internal compiler error(ICE)”或者是測試失敗,官網上建議:
(1)檢視http://llvm.org/docs/GettingStarted.html#getting-started-with-llvm這一章節瞭解清楚LLVM的配置和編譯的細節資訊
(2)瞭解一下原始碼樹的層次結構http://llvm.org/docs/GettingStarted.html#directory-layout
(1)(2)中內容的翻譯,我會在我的其他的部落格中進行介紹,歡迎指正。