Я пытался собрать llvm-py на Mac OS X.
Вот что я пытался сделать, мне нужно было скачать 11vm-2.7, а в файле README есть такой комментарий: Убедитесь, что '--enable-pic' передается в 'configure' LLVM
./configure --prefix=LLVM_DIRECTORY --enable-pic
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 Ссылка из: /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
from llvm import *
File "/Library/Python/2.7/site-packages/llvm/__init__.py", line 11, in
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)