ubuntu安裝LLVM和clang
問題描述
筆者在安裝LLVM和clang時遇到一下奇葩的問題,搞的人極為頭大。先說說筆者的環境吧。
- ubuntu12.04 64位。用這個主要是筆者之前做的一些工作需要在這個環境上部署。這也是筆者這一段時間來極為頭疼的事情。
- gcc-4.6.3/g++-4.63。這個是系統預設的,這樣導致了一下奇怪的問題。
由於特殊的環境,便造成了各種奇奇怪怪的問題,雖然這些問題以後會以同樣的方式重現,但是,也不失為以後遇到問題的一個思考方向。
安裝cmake
筆者的環境中的cmake版本為2.8.7而LLVM需要的版本最低要求為2.8.12.2。由於apt-get安裝的只能是2.8.7的了,無奈只能去官網上重新下載安裝包了。官網給出的是最新版本的而且是可執行的檔案,搗鼓了半天,在網上搜了半天都是啥./bootstrap
執行了
git clone git://cmake.org/cmake.git
克隆下來的是當時最新版本的3.4,為了報銷起見,筆者還是覺得安裝2.8.12.2版本的。那麼問題就來了,怎樣獲得2.8.12.2版本的程式碼呢?筆者是這樣乾的:1
git checkout git checkout -b 2.8.12.2 2.8.12.2 #錢一個2.8.12.2是筆者新建的一分支,後一個是tag也就是需要的版本號。
#這樣就相當於,從指定的tag新建了一個分支,這樣就可以獲取指定tag的程式碼了。
$:sudo ./configure
$:sudo make
$:sudo make install
這樣就安裝好了合適的cmake了。
升級gcc和g++
原本以為這樣就好了,事實上是筆者想的太多了。g++從4.7才開始支援才C++11,而筆者所裝LLVM版本為3.7已經有一些C++11特性了,自帶g++4.6.3已經不能對其進行編譯了。路有三條:
1. 直接sudo apt-get install llvm clang
一條命令搞定,可是安裝的LLVM版本比較老,是3.0版本的。
2. 和第一條路類似,降低LLVM版本,這就為難了——降到哪個版本呢?
3. 筆者選擇了第三條路,升級gcc/g++,通過筆者走的是保守路線,升級到4.8也不高也不低。
升級過程還是比較順利的;,新增新的源,直接apt-get安裝,修改gcc和g++連結。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
cd /usr/bin
sudo rm g++
sudo ln -s g++-4.8 g++
sudo ln -s gcc-4.8 g++
後兩步是必須的,不然預設編譯器還是之前的4.6版本的。
安裝LLVM和clang
總算把各種路障清乾淨了,接下來就更好辦了,直接按照官方文件一步一步輸命令安裝即可。不再贅述3,詳情見參考資料。