首页 > 解决方案 > Windows 可执行文件在我的 linux 上执行

问题描述

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

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

编译代码:

g++ main.cpp -o program.exe

操作系统:Linux Mint 20 肉桂。我通过键入执行./program.exe

标签: c++linuxg++exe

解决方案


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

答:没有什么“令人惊讶”的。我假设你在 Linux 下编译它?那么为什么不能在 Unix 下运行它呢?

问:我在 Windows 上构建的 .exe 能否在 Linux 上运行(如果我复制了二进制文件)?答:简短的回答:没有。

更长的答案:您可以安装Wine以在 Linux 上运行 Windows 应用程序。

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

问:我在 Ubuntu 上构建的可执行文件是否需要后缀为 .exe?答:不。文件后缀无关紧要。

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


要回答您的其他问题:

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

  • Sam Varshavchik 说得好:

出于同样的原因,您的丰田的散热器不适合道奇

  • 更重要的是,“可执行映像”不仅仅是“机器代码”。

  • .exe 是“可执行图像”的一个示例。它们有许多不同的格式:https ://en.wikipedia.org/wiki/Category:Executable_file_formats 。这些格式中的大多数都是特定于平台的。

  • 任何图像都必须由操作系统加载才能成为一个正在运行的进程。这也是特定于平台的。

  • 正在运行的进程将需要文件 I/O、内存和共享库等资源,这些资源也是特定于平台的。

我希望这会有所帮助...


推荐阅读