【问题标题】:not a mach-o file error in Python - mismatching architecture不是 Python 中的 mach-o 文件错误 - 架构不匹配
【发布时间】:2022-10-18 14:44:45
【问题描述】:

对于一个项目,我正在读取带有ctypes.CDLLctypes.cdll.LoadLibrary(...).so 文件,这是在开发容器中完成的。泊坞窗图像基于以下内容:

FROM --platform=linux/amd64 mcr.microsoft.com/vscode/devcontainers/python:3.10

注意linux/amd64 平台。使用uname查看系统信息时,显示x86_64架构:Linux ceb596f614b7 5.10.124-linuxkit #1 SMP PREEMPT Thu Jun 30 08:18:26 UTC 2022 x86_64 GNU/Linux。这运行良好,并且加载库没有任何错误。

但是,我有一台 M1 Mac,我在上面安装了 Rosett 和 Python (https://stackoverflow.com/a/71873666/2989034)。然后,当我检查系统信息时,我得到以下信息,也是 x86_64 架构。

Darwin MacBook-van-Bas.local 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000 x86_64

当我在 Rosetta 终端中加载文件时,出现以下错误:

OSError:dlopen(/Users/bas/lib.so,0x0006):尝试:'/Users/bas/lib.so' (不是 mach-o 文件)

这怎么可能?它是相同的 x86_64 架构。我唯一的选择是在开发容器中工作吗?

【问题讨论】:

    标签: python linux shared-libraries apple-m1 rosetta


    【解决方案1】:

    我最终找到了源代码并重新构建为 Mach-o 文件。但要回答我的问题:Apple platforms draw an important distinction between architecture and platform

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 2020-05-03
      • 2011-01-17
      • 2022-07-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2022-12-19
      • 2022-06-21
      相关资源
      最近更新 更多