Chinaunix首页 | 论坛 | 博客

qsh

  • 博客访问: 4030516
  • 博文数量: 1015
  • 博客积分: 15904
  • 博客等级: 上将
  • 技术积分: 8572
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-04 19:16
文章分类

全部博文(1015)

文章存档

2019年(1)

2017年(1)

2016年(19)

2015年(27)

2014年(30)

2013年(95)

2012年(199)

2011年(72)

2010年(109)

2009年(166)

2008年(296)

分类:

2009-12-02 22:17:57


 
LFS的目标是完全从源代码构造一个“独立的”和“纯净的”的Linux系统。
如果只是编译内核和需要的工具,也是能启动的,但是却引入了太多的host上的“元素”。
包括链接库的代码,编译过程中使用的工具,环境变量等等
 
首先构造一个干净的、不依赖于host系统的、能够自己自足的工具链,然后使用我们自己构造的工具链取代host系统中的工具来编译剩余的系统。
LFS-BOOK的作者这样说:“我们相信,对阅读LFS BOOK的人来说,如何创建一个正确的工具链是最应该知道的。其他的都是第二位的。”
 
在Linux系统中,一个工具链主要包括binutils, gcc, glibc。首先编译了binutils(Pass1)和gcc(Pass1)。尽管在Pass1中,这两个工具包是链接到host系统的共享链接库上去的,但已经是由我们自己的源码包编译来的。另外值得注意的是,在Pass1的gcc编译中使用了make bootstrap,这意味着gcc源码将被重复编译三遍,其中第二遍和第三遍使用第一遍编译得到的二进制gcc,并比较第二遍和第三遍编译的结果,一次来保证编译器自身编译的正确性。
接下来就是编译一个临时的glibc。这是一个Linux系统的核心,它将被后面的几乎每一个软件包所使用。为了在接下来的编译过程中使用这个glibc取代host系统的glibc,这里需要对工具链做出正确的调整,使ldscript和gcc specs文件中的链接路径指向我们新编译的glibc所在的位置
这样,接下来编译的binutils(Pass2)和gcc(Pass2)将被连接到刚才编译得到的glibc上面。至此,已经得到了一个独立于host系统的工具链。在第五章剩余的部分,我们将使用这个工具链编译出一个可以用于chroot进去的独立的工作环境。
阅读(465) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~