为啥 cx_Freeze 在 64 位 Debian Linux 上运行时使 32 位可执行?

Posted

技术标签:

【中文标题】为啥 cx_Freeze 在 64 位 Debian Linux 上运行时使 32 位可执行?【英文标题】:Why does cx_Freeze make 32 bit executable when run on 64 bit Debian Linux?为什么 cx_Freeze 在 64 位 Debian Linux 上运行时使 32 位可执行? 【发布时间】:2016-03-12 21:53:18 【问题描述】:

我希望能够在 Linux 中制作可执行文件。它可以工作,但它是一个 32 位文件。当我切换到 Windows 10 并运行相同的 setup.py 文件时,它会生成 64 位 .exe。但是,我想在 Linux 中进行,因为那是我编写源代码的地方。我正在使用 python 3.4

【问题讨论】:

【参考方案1】:

您需要确保在执行冻结过程时运行的是 64 位 Python 可执行文件,并且该可执行文件与您最初用于执行 cx_Freeze 安装的可执行文件相同。您可以通过在 Python 本身中运行以下代码来验证您正在运行 64 位 Python 可执行文件:

import struct
struct.calcsize("P")

这应该返回值 8。您也可以在 shell 提示符下运行 file 命令,如

file `which python3.4`

这应该返回类似以下的内容,表明它是 64 位还是 32 位。

/usr/bin/python3.4:ELF 64 位 LSB 共享对象,x86-64,版本 1 (SYSV),动态链接,解释器 /lib64/ld-linux-x86-64.so.2,用于GNU/Linux 2.6.32,BuildID[sha1]=9f7ffbe11edeecdab6596d4fa07cb559f788ac11,剥离

【讨论】:

以上是关于为啥 cx_Freeze 在 64 位 Debian Linux 上运行时使 32 位可执行?的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze 和 Python 3.4

为啥我不能在 cx_Freeze 中创建线程池?

CX_freeze 可执行文件将不起作用。 _tkinter DLL 加载失败

为啥 Python 3 的 cx_freeze 将一个项目打包成 8000+ 个文件,而 Python 2 的 cx_freeze 将同一个项目打包成 25 个文件?

为啥 Firestore 舍入 64 位整数?

将 32 位 C++ 代码移植到 64 位 - 值得吗?为啥?