Я пытался собрать llvm-py на Mac OS X.
Это то, что я пытался сделать, мне нужно было скачать 11vm-2.7, и файл README имеет этокомментарий: убедитесь, что '--enable-pic' передан в 'configure' LLVM
- Скачать 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)