【发布时间】:2022-10-18 14:44:45
【问题描述】:
对于一个项目,我正在读取带有ctypes.CDLL 和ctypes.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