【发布时间】:2015-02-20 02:02:45
【问题描述】:
我正在 Ubuntu 14.04 上试验 Nuitka 并尝试创建和运行可执行文件。我有一个文件hello.py 的内容
print("Hello please")
我已经使用命令nuitka hello.py 变成了hello.exe。但是,当我尝试使用 Wine 1.7 运行它时,我收到以下错误:
$ wine hello.exe
wine: Bad EXE format for Z:\home\crclayton\hello.exe.
我认为这是 Nuitka 的问题,而不是 Wine 的问题,因为我可以使用 Wine 运行我在 C# 中创建的 helloworld.exe。有人知道怎么解决吗?
编辑:
我在 Ubuntu 上没有任何运气,所以我在我的 Windows 7 分区(Ubuntu 和 Windows 都是 64 位)上测试了 hello.exe,我收到以下错误:
此文件的版本与您正在运行的 Windows 版本不兼容。检查您计算机的系统信息,看看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。
问题是 Nuitka 正在创建 32 位 exe 而我试图在 64 位操作系统上运行它吗?如果是这样,有人知道如何解决吗?
【问题讨论】:
-
运行
file hello.exe会得到什么? -
@icktoofay
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=2818f1ff4011ed5d22666d59b490cfac8aef0af9, not stripped我猜它是 64 位的,所以这不是问题。 -
从那里,我可以看到 Nuitka 正在生成一个 Linux 可执行文件。这当然会在带有
./hello.exe的 Linux 上运行,但因为它是 Linux 可执行文件而不是 Windows 可执行文件,Windows 将无法理解它,Wine 也不会。 -
Nuitka 创建 C++ 代码,因此您可以获得该代码并使用所需的编译器/目标选项进行编译。
-
在ao.gl/how-to-package-a-python-app-using-nuitka 上写了一份详细的指南来说明如何做到这一点