LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 825|回复: 1

关于第5章工具链的想法,不知道这样认为对不对

[复制链接]
发表于 2008-5-30 21:24:56 | 显示全部楼层 |阅读模式
工具链技术理解
一个Linux(或软件)运行时最终需要什么?正如yuorbest指出的,是glibc! 同样,在制作LFS中,第一个主要的目的,就是需要生成一个和宿主系统glibc无关的,新的glibc!这个glibc是怎么样生成的?它都需要什么?很简单,它是由开始编译的binutils,gcc,linux-libc-headers,三个编译生成的。那么,你怎么认为是由新编译的这三个文件来生成的glibc,而不是宿主系统中工具链生成的?看看前三个软件的安装过程吧。Binutils第一次安装的时候,出现了工具链调整,注意这行命令  make –C  ld  LIB_PATH=/tools/lib 此时,工具链中的连接器以及连接到新生成的连接器上了。同时,在4.4设置工作环境中,有这一句         PATH=/tools/bin:/bin:/usr/bin ,它保证了,未来再使用连接器的时候,搜索路径首先是从/tools/bin开始的,这样,在编译其他的软件的时候,用的连接器就是我们刚此新装的连接器。看看5.2工具链技术说明中,有这么一句:因为glibc总是使用在PATH目录里面找到的gcc,这也说明了,在编译时候的glibc的时候,使用的是我们刚才新编译的gcc。这也说明了,为什么为什么glibc包的安装排在了binutils和gcc的后面!同时,查看第5章的目录,可以发现,此后还有binutils和gcc的安装,原因就是第一遍的binutils和gcc的编译用的都是宿主系统的glibc,这与我们的目的编译一个纯净的系统目的不符,故后面再装完几个测试工具后,马上就用新编译出来的glibc库重新装了一遍binutils和gcc,这样,一个新的,不同于宿主系统的工具链制作完成了,以后,有这第一遍生成的glibc和第二遍生成的binutils,gcc组成的新的工具链来生成最终的LFS系统。当然,重新编译binutils和gcc,还有另外的一个目的,就是此时的编译环境只是一个c编译环境,这在5.4中有很详细的说明,编译环境还不完整。这就是编译binutils,gcc的另外一个目的!同时也可以理解为什么后面的软件包会依序出现!所有这一切都的目的,就是本章的名称——构建临时的编译环境!!至此,我们也可以推断,我们将要构建什么样的编译环境,这个环境能否承担在未来我们构建最终LFS系统的任务,以及我们需要哪些包,及为什么需要这些软件包。
上面是我的一些看法,不知道对不对,请大家给挑下毛病。
发表于 2008-6-6 17:14:35 | 显示全部楼层
感觉好像就是这么回事,呵呵!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表