2010年7月28日 星期三

[LLVM] LLVM-2.7 & LLVM-0.8.0.2

一直不停re-compile llvm實在是太痛苦了,
所以好不容易弄完之後,決定來紀錄一下這整件
痛苦的事。

話說要裝llvm-2.7很簡單,就
> brew install llvm
輕鬆、快速又好吃~
然後就想要開開心心的灌一下llvm haskell binding
結果,config一直死掉:
...snip...
checking for unistd.h... yes
checking llvm-c/Core.h usability... yes
checking llvm-c/Core.h presence... yes
checking for llvm-c/Core.h... yes
checking for LLVMModuleCreateWithName in -lLLVMCore... no
configure: error: could not find LLVM C bindings
cabal: Error: some packages failed to install:
llvm-0.8.0.2 failed during the configure step. The exception was:
exit: ExitFailure 1

上網查了以後發現問題出在Mac上面,但是實際
原因不明。總之,作法很簡單:就是把llvm-2.7
重新build成universal binary就好了,以下
重現當時機歪的整個過程(含brew的link):

[0] 砍掉原本brew install來的llvm 2.7
> brew uninstall llvm

[0.1] 準備給homebrew用的folder
(假設homebrew的prefix=/usr/local)
> cd /usr/local/Cellar
> mkdir llvm-gcc
> mkdir llvm-gcc/4.2
> mkdir llvm
> mkdir llvm/2.7

[1] 抓一下llvm和llvm-gcc
> wget 'http://llvm.org/releases/2.7/llvm-gcc-4.2-2.7-x86_64-apple-darwin10.tgz'
> wget 'http://llvm.org/releases/2.7/llvm-2.7.tgz'
> tar xzf llvm-gcc-4.2-2.7-x86_64-apple-darwin10.tgz
> tar xzf llvm-2.7.tgz

[2] 手動安裝(copy)一下llvm-gcc-4.2到/usr/local/Cellar下面去
> cd llvm-gcc-4.2-2.7-x86_64-apple-darwin10
> cp -R ./* /usr/local/Cellar/llvm-gcc/4.2
> brew link llvm-gcc
> cd ..

[3] make/make install llvm-2.7
> cd llvm-2.7
> ./configure --prefix=/usr/local/Cellar/llvm/2.7 --with-llvmgccdir=/usr/local/Cellar/llvm-gcc/4.2
(這邊要等一會兒)
> set -x UNIVERSAL 1
> make
(這邊要等一個小時左右)
> make install
> brew link llvm
> cd ..
至此,llvm-2.7和llvm-gcc-4.2就都裝好了。

llvm重灌好以後就直接
> cabal install llvm
就ok了

llvm haskell binding裝好以後,可以跑一下
他的example。看是要去這裡抓?還是要直接
解開~/.cabal/packages/hackage.haskell.org/
llvm/0.8.0.2/llvm-0.8.0.2.tar.gz這一個檔案。進去以後直接
> make
以後再看想要執行程式即可。
如果執行起來有問題可以參考這個

以上參考自這篇這篇

沒有留言:

張貼留言