当我在机器上安装Linux系统时,我不太明白Linux内核的编译过程。
以下是一些让我困惑的事情:
几天来我都很困惑,谢谢你的回应。
发布于 2009-01-30 03:34:14
您的Linux盒的第一轮二进制文件是在其他Linux盒上构建的(可能)。
第一个Linux系统的二进制文件是在其他平台上构建的。
该计算机的二进制文件可以将其根追溯到建立在另一个平台上的原始系统。
..。
向前推进足够远,您就会发现编译器是用更原始的工具构建的,这些工具反过来构建在它们的主机以外的机器上。
..。
继续推送,您会发现计算机已经安装好,以便通过设置开关输入机器的前面板上的指令。
很酷的东西。
规则是“构建工具来构建工具.”。非常像工具,运行我们的物理环境。也被称为“用鞋带把自己拉起来”。
发布于 2009-01-30 10:56:48
我认为你应该区分:
编译,v:使用编译器处理源代码并生成可执行代码[1]。
和
install,v:连接、设置或准备使用[2]的东西。
编译从源代码生成二进制可执行文件。安装只是将这些二进制可执行文件放在正确的位置,以便以后运行它们。因此,如果二进制文件可用,安装和使用不需要编译。相应地,想想“编译”和“安装”就像“烹饪”和“服务”一样。
现在,你的问题:
内核不能在没有编译器的情况下编译,但可以从编译的二进制文件中安装。
通常,在安装操作系统时,需要安装预编译的内核(二进制可执行文件)。它是由其他人编写的。而且,只有当您想自己编译内核时,您才需要源代码、编译器和所有其他工具。
即使在像gentoo这样的“基于源代码的”发行版中,您也是从运行已编译的二进制文件开始的。
所以,你可以一辈子不编译内核,因为你让别人编译它们。
如果没有内核(OS),则无法运行编译器。因此,必须安装已编译的内核才能运行编译器,但不需要自己编译内核。
同样,最常见的做法是安装编译器的已编译二进制文件,并使用它们编译任何其他东西(包括编译器本身和内核)。
现在,鸡肉和鸡蛋的问题。第一个二进制是由别人编译的..。请看dmckee的一个很好的答案。
发布于 2009-01-30 10:56:39
描述这种现象的术语是自举,这是一个有趣的概念。如果你考虑到嵌入式开发,很明显,很多设备,比如闹钟、微波炉、遥控器,都没有足够强大的功能来编译自己的软件。事实上,这类设备通常没有足够的资源来远程运行像编译器这样复杂的东西。
他们的软件是在台式机上开发的,编译后再复制。
如果你对这类事情感兴趣的话,我脑海中浮现的一篇文章是:关于信任的思考 (pdf格式),这是一篇经典而有趣的读物。
https://stackoverflow.com/questions/494372
复制相似问题