为不同平台上的Linux上编译C/C 源代码

Compiling C/C++ source code on Linux for different platforms

本文关键字:编译 源代码 Linux 平台      更新时间:2023-10-16

我已经读过有关在Windows上运行的Linux上编译C/C 源代码的一些内容。我还尝试了mingw,一切都很好。

但是,我不明白为什么我必须在Linux上使用MingW来制作在Windows上工作的二进制文件。是什么使G 输出无法在Windows上运行?还有什么使G 输出成为可能在Linux上运行它们?输出文件是否具有不同的结构:标题,数据等,并且只能通过特定的操作系统来解释它们?

谁能为我清楚吗?我很感激你们中的任何一个不仅要与业余有关,而且还要对一个对操作系统感兴趣并且想知道这背后的真正观点的人。

在Linux上构建二进制文件的窗户构造互相编译,就像在Linux上构建二进制文件一样,例如,Android可以做到。Windows和Linux机器可能(也许)具有类似的硬件,但它们是非常不同的操作平台。

即使在平台之间执行与prinf("Hello world")一样简单的事情时,在平台级别上会发生什么。也就是说,将字符呈现到控制台的方式不同。在诸如fork()之类的呼叫方面,面临更大的挑战,这与Windows Process Management所做的任何事情都不相对。

我相信,即使将程序代码和数据加载到内存之间的方式也不同于Windows和Linux,甚至在同一硬件上也是如此。

根本没有特定的理由认为为一个平台构建的本机二进制会在另一个平台上运行。使用Java,我们已经习惯了编译代码是跨平台的想法,但是Java .class文件中的内容不是本机可执行代码 - 我们依靠Java运行时系统来执行在平台级别上正确的事情。使用C/C ,我们需要构建工具来做到这一点(而且通常也有一些程序员专业知识的量度)。