はじめに
Macで、Go言語のLLVMバインディングを使おうとしたときに、かなり手間取ったのでメモ。
あくまで自分の環境向けなので、他の人の役にたつかは不明。
準備
環境変数LDFLAGSに/usr/local/include
などがセットされていると、
ld: can't map file, errno=22 file '/usr/local/include' for architecture x86_64
みたいなエラーが起きるときがあるのでLDFLAGS
をクリアしておく(自己責任ででお願いします)。
$ unset LDFLAGS
ダウンロード
$ release=RELEASE_601
$ svn co https://llvm.org/svn/llvm-project/llvm/tags/$release/final $GOPATH/src/llvm.org/llvm
どのバージョンのLLVMを使うかによって、releaseの値を変える。
存在するバージョンはhttps://llvm.org/svn/llvm-project/llvm/tags/を見るとわかる。
CMakeLists.txt
$GOPATH/src/llvm.org/llvm/CMakeLists.txt
で、 /usr/local/include
が含まれている行をコメントアウトしておく。
ld: can't map file, errno=22 file '/usr/local/include' for architecture x86_64というエラーが出たりしたので念のため。
Build
$ cd $GOPATH/src/llvm.org/llvm/bindings/go
$ ./build.sh
$ go install llvm.org/llvm/bindings/go/llvm
ビルドには時間がかかるので覚悟しておく。
参考
Go言語で利用するLLVM入門
ld: can't map file, errno=22 file '/usr/local/opt/libffi/lib' for architecture x86_64 #1133