0

只是关于编译内核的一个小澄清(不是我正在做的任何:P)。 我对编译的了解是它是特定于计算机的,尽管您可以使用交叉编译器来编译您的工作以在不同的机器上运行(或编译为在虚拟机下运行的字节码),但是交叉编译需要一些基础知识/运行您编译的程序所需的必要条件(如C++/C库或Java VM ...)。内核编译 - 跨平台

但是内核呢?他们编译它们一次,并在每台*机器上奇迹般地运行(*没有检查),我搜索了网络,并找到了一些关于如何交叉编译内核的指南,但没有说明它为什么或如何工作!具有不同指令集的不同CPU如何成功运行相同的二进制文件?

如果你有一些裁判回答我的问题,我会为此非常感激,也许事情让我开始学习更多关于内核将以精湛的:d

回答

0

他们不知道。为例如ARM v6编译的内核不能在任何其他类型的CPU上运行。每个二进制文件都是一样的,内核并不是魔术。而交叉编译仅意味着生成的二进制文件特定于与编译器运行的体系结构不同的体系结构。例如,在我的x86桌面上,我可以编译将在x86上运行的二进制文件,或者我可以交叉编译将运行的二进制文件,例如PowerPC。但两者都不会在对方的目标平台上运行。

+0

所以当我安装linux时,它会检测我的arch并为我的系统安装适当的内核? –

+0

取决于安装程序/发行版。我使用的发行版没有这样做,你必须自己选择正确的安装程序。 – delnan