设置如下:
我的设备资源非常有限,并且 busybox 正在其上运行。 使用 PyInstaller,我在具有相同架构的 Linux 系统上用我的 python 脚本构建了一个可执行文件。我知道可执行文件是兼容的,这是毫无疑问的。 只有一个问题:可执行文件仍然无法运行:
[37832] Error loading Python lib '/tmp/_MEIEmDggN/libpython3.11.so.1.0': dlopen: /usr/lib64/libm.so.6: version `GLIBC_2.35' not found (required by /tmp/_MEIEmDggN/libpython3.11.so.1.0)
我了解错误并想找出安装了哪个 glibc 版本,但我无论如何也找不到。
ldd --version
例如,不会产生任何结果(ldd 未找到)
我确信安装了一个c库,因为那里还运行着其他python可执行文件。我如何找出是哪一个以及什么版本?然后我想使用该特定版本构建可执行文件。在设备本身上构建可执行文件不是一个选项,它的存储空间和性能都非常小,无法始终提取所有依赖项并将它们捆绑在一起。
只有一个问题:可执行文件仍然无法运行
可执行文件无法运行,因为它需要(链接到)GLIBC-2.35(或更高版本),但正在具有旧版本 GLIBC 的计算机上运行。
这也与 busybox 无关。
您必须:
libpython3.11.so.1.0
。第二个修复可以通过在
Python
或具有适当(旧)GLIBC 的 docker 中构建 chroot
来完成。
例如,不会产生任何结果(ldd 未找到)ldd --version
您可以在没有
ldd
的情况下找到您拥有的版本 - 只需单独运行 /usr/lib64/libc.so.6
即可打印其版本。