我试图在 Mac OS X 上构建llvm-py 。
这是我尝试做的,我需要下载 11vm-2.7,并且 README 文件有这样的注释:确保将 '--enable-pic' 传递给 LLVM 的 'configure'
- 下载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)