如何知道操作系统支持哪些类型的文件扩展名?

如何知道操作系统支持哪些类型的文件扩展名?

.exe 文件扩展名可以在 Windows 上运行,但不能在 Linux 上运行。dmg 文件扩展名可以在 Mac OS 上运行,但不能在 Windows 上运行。什么标准决定文件是否运行?

现在 Google Fuchsia 操作系统正在开发中。它是用‎ ‎C‎、‎C++‎、‎Dart‎、‎Go‎、‎Rust‎、‎Python 编写的。这是否意味着用 C‎、‎C++‎、‎Dart‎、‎Go‎、‎Rust‎、‎Python 编写的程序可以在 Google Fuchsia 上运行?还是取决于其他因素?

答案1

有三种截然不同的“可执行”文件类型:

“二进制”文件

“二进制”是一个不正确的名称,但却是最常用的。这些文件通常.exe在 Windows 上具有扩展名,而在 Unix/Linux 上通常没有扩展名(但有时您可以看到.bin)。这些文件包含处理器可直接执行的代码,将直接使用操作系统服务(例如读取/写入文件或向用户显示内容),并且需要采用特定格式才能让操作系统加载和执行它们。因此,它们对于每个操作系统都是不同的。它们通常用 C 或 C++ 编写。实际上,您不需要知道...

“解释”文件

可执行文件只是“纯文本”文件(可以使用简单的文本编辑器创建/编辑它们)。要执行它们,必须由称为“解释器”的程序加载和解释(此解释器本身属于上面的“二进制”类别)。您可以为每个操作系统提供特定版本的解释器,因此您可以在任何有解释器实现的操作系统中运行这些文件。典型的语言:Python(.py)、Perl(.pl)、JavaScript(.js)。

“字节码”文件

这些文件介于其他两个文件之间。不是为特定机器类型或操作系统创建程序,而是为某个假设的“虚拟机”创建“二进制”程序。要执行它,您可以使用另一个“二进制”程序,该程序在您的操作系统上模拟/仿真该虚拟机。以这种方式编写的代码可以在存在虚拟机实现的任何操作系统上运行。使用这种方法的典型语言是 Java ( .jar)。

尽管“解释型”和“字节码”文件理论上可以在任何地方运行,但要做到这一点,它们必须经过精心编写 - 不能依赖于某些仅存在于特定操作系统上的行为/功能。并非所有文件都完全与操作系统无关。

答案2

扩展与应用程序是否能在某些操作系统上运行无关。
例如,在 Linux 上,所有可执行文件都是 ELF 格式的可执行和可链接格式。

在 Linux 上,你可以使用以下命令获取文件的类型:file NameOfapplication

应用程序是否能在某个操作系统上运行与它所编写的编程语言、是否针对某个操作系统进行编译以及是否支持该操作系统的库有关。

有些语言(如 Python、Java)是交叉兼容的,因为它们不是完全编译的语言,而是编译成字节码,然后由安装了解释器的操作系统上的解释器执行。希望这能有所帮助

相关内容