【问题标题】:pyinstaller GLIBC_2.25 not found, however another script works找不到pyinstaller GLIBC_2.25,但是另一个脚本有效
【发布时间】:2022-08-07 01:36:08
【问题描述】:
我用一个简单的 Python 脚本创建了一个可执行文件,在 Ubuntu 18.04 上使用 pyinstaller,并在另一台计算机(也使用 Ubutnu 18)上对其进行了测试,并且运行良好。
但是,当尝试使用更复杂的脚本(更多库导入)时,可执行文件在另一台计算机上失败并出现错误
ImportError: /lob/x86_64-linux-gnu/libc.so.6: version \'GLIBC_2.25\' not found
这不可能是 Python 不兼容(请参阅https://github.com/pyinstaller/pyinstaller/issues/4758),因为其他脚本确实可以正常工作。所以它很可能是基于第二个脚本导入的一些库。
如何将导入的库包含在 Pyinstaller 生成的可执行文件中(如果这甚至是此错误的根源)?
标签:
python
pyinstaller
executable
【解决方案1】:
可能的解决方案(我尚未对此进行测试)是在旧版本的操作系统上构建您的可执行文件。
我看到了同样的错误。
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /tmp/_MEIjdcWu4/./libX11.so.6)
[32614] Failed to execute script 'test_executable' due to unhandled exception!
我在 Ubuntu 22.04 上使用 Pyinstaller 构建了我的可执行文件。然后我在旧的 Ubuntu 20.04 上复制并运行了可执行文件,遇到了错误。
根据下面的评论,这可能是一个兼容性问题,在较新操作系统上构建的可执行文件与旧操作系统不兼容。
“就其价值而言,问题可能在于这些库与
构建的程序与系统库冲突,防止
正确加载 DRI 驱动程序。
罪魁祸首可能是标准 c/c++ 库(libgcc_s.so.1,
libstdc++.so.6) 或者 X11 库 (libX11.so.6, libXau.so.6,
libXdmcp.so.6、libXext.so.6、`libXrender.so.1˙)。也许更有可能
前者比后者。
例如,如果构建系统上的 libstdc++.so.6 比
一个由目标系统使用,那么非捆绑库将
由于缺少符号(在较新的版本中存在)而无法加载,
库的系统版本,但不在捆绑的版本中)。这是
实际上,Linux 上纯二进制软件的一个很常见的问题,
尤其是在更前沿的分布上。在那些情况下,
删除有问题的库的捆绑版本可能会有所帮助。
(您对系统 libgvfsdbus.so 有类似的问题,缺少
捆绑的 libglib-2.0.so.0 中不可用的符号,它
可能比系统上可用的 glib 库更旧)。”
资源:
https://github.com/cryptoadvance/specter-desktop/issues/373#issuecomment-694476451