在其他Linux计算机上运行已编译的Linux可执行

时间:2017-11-09 22:51:35

标签: python linux python-2.7 executable pyinstaller

我一直在开发一个自定义程序,允许我控制我网络上的其他基于Linux的计算机。我一直在使用Python并使用PyInstaller将代码编译成Linux可执行文件。 在我自己的计算机上运行可执行文件就可以正常工作并且完全符合它的预期。但是,一旦我将它发送到另一台计算机进行测试,我就会收到此错误。

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.25' not found (required by /tmp/_MEIXcUz91/libudev.so.1)
[3716] Failed to execute script RP

我用来编译PyInstaller

代码的命令
python pyinstaller.py -D -F -n RP -c RP.py

同样,可执行文件在我用来创建和编译它的计算机上完美运行,但是一旦我将它发送到我的其他基于Linux的计算机并执行它,它就会崩溃。

2 个答案:

答案 0 :(得分:1)

问题是两台计算机上有不同的C系统库。移植预先构建的二进制文件时,有时会遇到困难。要么确保使用类似的环境,要么将所有依赖项放入二进制文件中 - 这可能会显着增加其大小。要执行后者,您需要在编译期间使用' - static'关键字。不过,我不确定这是否足够。

编辑:

由于这是一个纯Python项目,你应该确保使用的Python版本兼容,即相同的Python版本和相同的Python版本(CPython等)。

答案 1 :(得分:0)

使用ldd 如果你提交的是RP ldd RP - 寻找动力,以便可执行文件使用的库,如果你可以改变你的程序到静态库的链接,可能能够使更多的可移植性,你将不得不留在相同的Linux版本来运行你的程序。您也可以使用可执行文件打包.so依赖项,但是很麻烦。