不是Python不匹配体系结构中的mach-o文件错误



对于一个项目,我正在读取一个包含ctypes.CDLLctypes.cdll.LoadLibrary(...).so文件,这是在devcontainer中完成的。docker图像基于以下内容:

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

当我在罗塞塔终端中加载文件时,我会得到以下错误:

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

这怎么可能?它是相同的x86_64体系结构。我唯一的选择是在devcontainer中工作吗?

我最终找到了源代码并重新构建为Mach-o文件。但要回答我的问题:苹果平台在架构和平台之间有着重要的区别。

相关内容

最新更新