以32位模式运行OS X通用二进制文件

7
我有一个第三方库(Xerox的有限状态工具接口),它作为通用二进制文件内部包含两个变体:PPC和i386变体。我还有一个Python接口来使用这个库(使用ctypes)。
但是当我尝试运行提供Python接口的示例代码时,我会收到一个错误,抱怨库的架构不正确:
ImportError: dlopen(/Users/arne/sw/lib/libxcfsm.dylib, 10): no suitable image found. Did find: /Users/arne/sw/lib/libxcfsm.dylib: mach-o, but wrong architecture 据我所知,这是因为Python可执行文件在我的库中除了这两个版本之外还有一个x86_64版本,并且更喜欢在那种模式下运行。是否有办法强制Python可执行文件启动i386版本而不是x86_64版本,仅对某些脚本有效呢?
2个回答

17

如果你正在使用苹果系统的Python(在Snow Leopard上),你可以使用以下方法执行它:

arch -i386 python
抱歉,我只能使用英语进行答复。
robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647

要以32位模式启动解释器。此外,还可以设置一个环境变量来为系统Python设置(VERSIONER_PYTHON_PREFER_32_BIT)。

如果是您自己构建的Python,则目前存在一些与体系结构选择有关的错误,但如果您使用此票中的pythonw.c进行重新构建,则可以正常工作。


3

如果您没有使用系统Python,可以在~/.bash_profile中添加一行:

export VERSIONER_PYTHON_PREFER_32_BIT=yes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接