+ -
当前位置:首页 → 问答吧 → LFS中关于第二遍编译gcc时那个补丁的问题

LFS中关于第二遍编译gcc时那个补丁的问题

时间:2008-08-13

来源:互联网

在lfs手册中5.11节第二遍编译gcc时,它先打了了补丁,再编译的gcc,说是为了保证新的动态连接器在编译 GCC 的时候就用上(原文是:现在预先打补丁而不是在安装 GCC 之后调整 specs 文件可以保证新的动态连接器在编译 GCC 的时候就用上)。
这块就不懂了,在glibc装好之后调整工具链的时候不是已经改了那个临时的gcc的specs文件了吗?改这个文件不就是为了让gcc使用那个新装的动态连接器,从而使它编译的程序都连接到新库上吗?那文中怎么又说“现在预先打补丁而不是在安装 GCC 之后调整 specs 文件可以保证新的动态连接器在编译 GCC 的时候就用上”?就算不打这个补丁,新的动态连接器一样会用上啊?是文中表达的问题,还是我有什么地方我不知道的?
我看了英文原文(Patching now rather than adjusting the specs file after installation ensures that the new dynamic linker is used during the actual build of GCC)觉得翻译也没有什么大问题啊?

简单来说,我的问题就是:第二次编译gcc时对其使用的缺省动态连接器的修改可以在编译之前也可以在编译之后,而不必像文中说的一定要在编译之前修改。不知对否?

作者: weibo4551   发布时间: 2008-08-13

你说的是 gcc-?.?.?-specs-?.path 补丁吧,用文本编辑器打开看下就明白了

缺省动态连接器的修改可以在编译之后,那么编译出来的gcc 连接的是当前系统的庫文件,而不是/tools/中的,這樣看次沒問題,但到后面的 chroot 后 gcc 就不能用了

缺省动态连接器的修改可以在编译之前,使得 gcc 連接的是 /tools 中的庫這樣後面 chroot 后 gcc 也可以用

作者: RTL   发布时间: 2008-08-13

lz 你的想法正确,并且可以实际施行,但思路错误。
LFS的本质是尽快摆脱对宿主的依赖,这个补丁在源码级作出的修正,正是要达到此目的。
同时按你的想法施行的话,临时系统纯度没问题,但不能满足要求苛刻的人,到第二遍调整spces时也会有些混乱。

ls 有些概念混乱,可能是被gcc编译gcc闹晕了,那个gcc源码中"动态连接器"是内建specs的一部分,并不影响新编译生成的gcc,但会影响其行为。

作者: 聚焦深空   发布时间: 2008-08-14

首先谢谢各位的回答了。
还有个小问题在LFS书中的这句话:“现在预先打补丁而不是在安装 GCC 之后调整 specs 文件可以保证新的动态连接器在编译 GCC 的时候就用上“的,它现在打的这个补丁作用的是即将安装的新gcc,和正在使用的临时的gcc是没有关系的,也就不会影响这个临时gcc使用哪个动态连接器了,但是文中那句话怎么会说这样做 ”可以保证新的动态连接器在编译 GCC 的时候就用上“?是文中的表述有问题还是有什么小点子是我不知道的?比如这样做怎么就保证新的动态连接器在编译 GCC 的时候就用上了?

作者: weibo4551   发布时间: 2008-08-14

个人理解还是上面提到的直接在源码级修正了内建specs。

您按自己的想法实际操作一下可能会更好些。

作者: 聚焦深空   发布时间: 2008-08-14

恩,知道了,谢谢了啊。

作者: weibo4551   发布时间: 2008-10-03