c++ - 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
解决方案
问:我写了一个简单的代码并在 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、内存和共享库等资源,这些资源也是特定于平台的。
我希望这会有所帮助...
推荐阅读
- jquery - 在这种情况下,这指的是什么,为什么我要将变量解析为我的变量以进行遍历?
- jquery - jQuery dymanic 添加的输入未被删除
- ios - 适用于 iOS 的 Flutter 版本:产品 > 存档因“找不到文件”而失败
- arithmetic-expressions - 算术表达式评估 oz mozart
- python - 添加一个自制的python模块到我的heroku应用程序
- python - IndexError:索引 1 超出轴 0 的范围,大小为 1(python,mxnet)
- rest - 用于移动的 Web 应用程序 + RestAPI
- c# - CouchDb 查询 2 键 - 电子邮件和 DateTimeOffset 范围
- mysql - 教义 - 有条件的双重连接
- scala - Scala 中动态 XML 的函数调用