运行 在其他 Linux 台计算机上编译 Linux 可执行文件

Running compiled Linux executable on other Linux computers

我一直在开发一个自定义程序,该程序允许我控制网络上其他基于 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 的计算机并执行它,它就会崩溃。

使用 ldd 如果你的文件是RP 激光雷达 - 寻找可执行文件使用的动态库,如果你能改变你的程序到静态库的链接,也许能够使更多的可移植性否则你将不得不留在 linux 到 [=13= 的相同版本上] 你的程序。您也可以将 .so 依赖项与您的可执行文件一起打包,但是很乱。

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

编辑:

因为这是一个纯粹的Python项目,你应该确保使用的Python版本是兼容的,即相同的Python版本和相同的Python ] build (CPython, 等等).