Windows 可执行文件在我的 linux 上执行

Windows executable got executed on my linux

我写了一个简单的代码,并在 linux 中使用 g++ 以 .exe 格式编译,令人惊讶的是它在我的 linux 终端中执行了。你能说出原因吗? linux 终端可以执行任何格式的机器代码吗?我可以 运行 和 windows 一样吗? 代码:

#include<iostream>
using namespace std;
int main(){
    cout<<"Hello World !"<<endl;
    return 0;
}

编译代码:

g++ main.cpp -o program.exe

OS:Linux 薄荷 20 肉桂色。 我通过输入 ./program.exe

来执行

问:我在 linux 中编写了一个简单的代码并使用 g++ 编译为 .exe 格式,令人惊讶的是它在我的 linux 终端

中执行了

A:没什么“奇怪”的。我假设你是在 Linux 下编译的?那么为什么你不能在 Unix 下 运行 呢?

问:我在 Windows 运行 上构建的 .exe 会在 Linux 上构建吗(如果我复制了二进制文件)? A:简答:否

更长的答案:您可以在 Linux.

上安装 Wine 到 运行 Windows 应用程序

问:我在 Ubuntu 运行 上构建的 .exe 会在 Windows 上吗?答:没有。

问:我在 Ubuntu 上构建的可执行文件是否需要具有后缀 .exe? A: 没有。文件后缀无关紧要。

问:我在 Windows 上构建的可执行文件是否需要具有后缀 .exe?答:是的。


回答您的其他问题:

为一个平台构建的 .exe 无法加载或 运行 在不同平台上加载的原因有很多。

  • Sam Varshavchik 说得好:

It's for the same reason a radiator for your Toyota won't fit into a Dodge

  • 更重要的是,"executable image" 不仅仅是“机器代码”。

  • .exe 是“可执行映像”的示例。它们有许多不同的格式:https://en.wikipedia.org/wiki/Category:Executable_file_formats。大多数这些格式是 platform-specific.

  • 任何图片都必须是loaded by the operating system in order to become a running process。这也是platform-specific.

  • 运行ning 进程将需要文件 I/O 、内存和共享库等资源,这些资源也是 platform-specific.

希望对您有所帮助...

由于您在 Linux 上使用 g++ 编译了代码,因此您应该能够 运行 在 Linux 上使用它,但在 [=18] 上不起作用=] 因为二进制可执行文件是为 Linux.

编译的

在Windows上,.exe是可执行文件的扩展名,但必须为Windows编译二进制代码才能运行。在 Linux 上,您可以使用任何扩展名,.mp4 或任何扩展名,并且在终端中键入 ./program.mp4 时它仍然会 运行。