我用pyinstaller创建的二进制文件与linux不兼容



我使用带有--onefile选项的最新版本pyinstaller来创建我的python脚本的一个独立文件。在我的Mac上,如果我在终端(bash shell)中打开文件,它就可以正常工作,但在Linux bash中,我得到以下错误

bash: ./myprog: cannot execute binary file

我在这里错过了什么吗?

pyinstaller创建一个可执行文件,该文件将在运行它的机器上运行。所以如果你在Windows上运行pyinstaller,它会为Windows创建一个可执行文件。同样适用于Mac, Linux等,所以我尝试在Linux机器上运行pyinstaller来为该环境生成可执行文件。Mac可执行文件不是Linux可执行文件。

这是因为(据我所知)底层Python包含某些特定于平台的实现。例如,os模块有一堆有条件的、依赖于平台的导入,它们将被捆绑到可执行文件中。因为它只能访问pyinstaller运行的平台上可用的任何二进制文件,所以它不能为其他平台生成一个版本。

Linux检查可执行文件的幻数,以"DLE elf"开头的Linux可执行文件的幻数

执行"od -c YUPUR_FILE"并查看结果

最新更新