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
时它仍然会 运行。
我写了一个简单的代码,并在 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
时它仍然会 运行。