为啥 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 可执行文件将不起作用。 _tkinter DLL 加载失败
为啥 Python 3 的 cx_freeze 将一个项目打包成 8000+ 个文件,而 Python 2 的 cx_freeze 将同一个项目打包成 25 个文件?