C可执行文件是否可以在所有操作系统上运行

时间:2015-09-18 07:14:01

标签: c operating-system cross-compiling executable

如果我在操作系统中创建C可执行文件(例如:Windows), 该文件可以在其他操作系统上运行(如:Linux,Mac-OS)。

2 个答案:

答案 0 :(得分:3)

尝试给出一个完整的答案,理论上的“是”,非常大“但是”。

首先要理解的是:由C编译器创建的二进制可执行文件与任何相关,与编译器为其他语言创建的相关。所以以下内容不必对C做任何事情。

有两个问题。操作系统具有不同的文件格式,用于存储二进制文件(通常由代码,数据......以及一些元信息组成的部分组成,告诉系统将它们放置在哪里,重定位要做什么,等等)。然后,操作系统还以某种方式将其API暴露给二进制文件(对于Windows,一组系统DLL)。

实际上,只要处理器架构相同,您就可以在另一个系统上运行二进制文件。你只需要一些a。)知道如何加载windows二进制文件的软件和b。)将win32 API调用转换为目标平台的API调用。这是wine的作用。

我只是猜测你来自哪里就读过关于C独立于平台的内容。这是事实,但仅适用于源代码。只要你有一个C编译器就可以在任何平台上编译(并且运行)只有标准C的C程序。

答案 1 :(得分:1)

没有“C可执行文件”这样的东西。 C编译器将C源代码转换为特定目标系统。可执行文件的格式将是OS指定的格式。因此,如果您使用C编译器进行Linux,它将生成仅适用于Linux的可执行文件。

但是,如果代码是纯标准C,则可以使用相同的源代码并在不同的编译器上为不同的平台编译它。也称为移植程序。