为什么我的Linux编译的二进制文件在Windows上运行时不起作用?

kqlmhetl  于 2023-08-07  发布在  Windows
关注(0)|答案(2)|浏览(215)

我有一个非常简单的代码,使用C++和Gtkmm:

#include <gtkmm.h>

int main(int argc, char *argv[]){
Gtk::Main app(argc, argv);
Gtk::Window window;
Gtk::Main::run(window);
return EXIT_SUCCESS;
}

字符串
我在Linux上编译了这个,它是完美的,我可以执行它。但问题是,当我复制过去的可执行文件,我没有实现,使在Windows上可行。但我一直认为Gtkmm是便携式的。
我该如何解决这个问题?

kiayqfof

kiayqfof1#

Gtkmm确实是一个可移植的实现。然而,您不能简单地将可执行文件从Linux复制并粘贴到Windows。你必须为你运行的每个平台编译一次程序。在您的情况下,您必须为Windows创建典型的.exe可执行文件。
如果您想交叉编译Windows的可执行文件(即使用您的Linux机器创建Windows的.exe文件),请查看mingw编译器工具链。这个blog可能也有一些有趣的信息给你。

oalqel3c

oalqel3c2#

这是因为Linux和Windows上的可执行文件具有不同的结构:
在Linux上,您有ELF二进制文件,但在Windows上不起作用。类似地,如果您从Windows获取EXE二进制文件并试图在Linux机器上执行它,它将无法工作。
有关详细信息,请参阅ELFEXE

相关问题