【问题标题】:Run an OS X universal binary in 32-bit mode在 32 位模式下运行 OS X 通用二进制文件
【发布时间】:2023-04-11 07:43:02
【问题描述】:

我有一个第三方库(Xerox 有限状态工具的接口),它作为通用二进制文件提供,内部有两个变体:PPC 和 i386 变体。我还有一个到库的 Python 接口(它使用 ctypes)。

但是当我尝试运行 Python 接口提供的示例代码时,我收到一个错误,抱怨库的架构错误:

ImportError: dlopen(/Users/arne/sw/lib/libxcfsm.dylib, 10): 找不到合适的图像。找到了:
/Users/arne/sw/lib/libxcfsm.dylib: mach-o,但架构错误

据我所知,这是因为除了我的库中的两个版本之外,python 可执行文件内部还有一个 x86_64 变体,并且更喜欢在该模式下运行。我有什么方法可以强制 python 可执行文件启动 i386 版本而不是 x86_64 版本,仅用于一些脚本?

【问题讨论】:

    标签: python macos universal-binary


    【解决方案1】:

    如果你没有使用系统python,你可以继续在你的~/.bash_profile添加一行:

    export VERSIONER_PYTHON_PREFER_32_BIT=yes
    

    【讨论】:

      【解决方案2】:

      如果你使用的是苹果系统python(在雪豹上)你可以使用

      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,则当前存在拱形选择错误,但如果您使用来自 this ticket 的 pythonw.c 重新构建,它可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-19
        • 2010-12-29
        • 2013-04-09
        • 2012-04-12
        • 2018-09-17
        • 1970-01-01
        • 2015-09-28
        • 2011-12-01
        相关资源
        最近更新 更多