Mac OS X でllvm-pyをビルドしようとしていました。
これは私がやろうとしたことで、11vm-2.7 をダウンロードする必要があり、README ファイルには次のコメントがあります。
- llvm 2.7をダウンロードします。
- llvm 2.7 のビルド: 実行
./configure --prefix=LLVM_DIRECTORY --enable-pic
- llvm-py 0.6 をダウンロードします。
- llvm-py 0.6 をビルド: 実行
python setup.py build --llvm-config=LLVM_DIRECTORY/bin/llvm-config
すべてがエラーなしでコンパイルされますが、テスト ファイルを実行しようとすると、このエラー メッセージが表示されます。
ImportError: 'dlopen(/Library/Python/2.7/site-packages/llvm/_core.so, 2): Symbol not found: __ZTVN4llvm16ExtractValueInstE\n Referenced from: /Library/Python/2.7/site-packages/llvm/_core.so\n Expected in: flat namespace\n in /Library/Python/2.7/site-packages/llvm/_core.so'
メッセージ エラーは、関数「llvmExtractValueInst」が不足しており、フラットな名前空間の問題があることを示しているようです。これの何が問題なのですか?
llvm 2.7 では、Makefile.rules に次の行があります。
SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined -Wl,suppress \
-dynamiclib
を削除しようとしましたflat_namespace
が、コンパイル エラーが発生しました。
追加した
locojay の回答に従って、brew と llvmpy をビルドできました。
export REQUIRES_RTTI=1
brew install llvm --rtti
sudo pip install git+https://github.com/llvmpy/llvmpy
ただし、テスト ディレクトリでサンプルを実行しようとすると、別の種類のエラーが発生します。
test> python example.py
Traceback (most recent call last):
File "example.py", line 4, in <module>
from llvm import *
File "/Library/Python/2.7/site-packages/llvm/__init__.py", line 11, in <module>
from llvm import _core
ImportError: dlopen(/Library/Python/2.7/site-packages/llvm/_core.so, 2): Symbol not found: __ZN4llvm10DataLayout2IDE
Referenced from: /Library/Python/2.7/site-packages/llvm/_core.so
Expected in: flat namespace
in /Library/Python/2.7/site-packages/llvm/_core.so
これは私が実行した結果ですotool -L /Library/Python/2.7/site-packages/llvm/_core.so
/Library/Python/2.7/site-packages/llvm/_core.so:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)