+ -
当前位置:首页 → 问答吧 → lfs6.3 第5.7 第一次调整工具链的疑问.

lfs6.3 第5.7 第一次调整工具链的疑问.

时间:2009-12-16

来源:互联网

lfs6.3 第5.7 第一次调整工具链的疑问.
gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \
> `dirname $(gcc -print-libgcc-file-name)`/specs
对上面这句话我有3个疑问
1.这个gcc应该是/tools/bin/gcc吧???
2.因为gcc的连接是由/tools/bin/ld实现的.那么上一部[mv -v /tools/bin/{ld-new,ld}]
的作用是什么??ld-new已经知道去/tools/lib查找库,为什么我又要调整gcc的specs呢?
还是这部可以省略(为了安全).gcc-pass2的patch是否也可以省略.
3.关于/tools/lib/ld-linux.so的疑问.
当新的gcc(gcc-pass1之后)编译的运行程序,为什么/tools/lib/ld-linux.so 知道去/tools/lib找,
这和编译binutils时指定[make -C ld LIB_PATH=/tools/lib]LIB_PATH有什么关系??
LIB_PATH告诉ld只是连接的时候去哪找库,而ld-linux.so是决定运行的时候去哪加载库??
和--prefix又有什么关系吗?

作者: yueluck   发布时间: 2009-12-16

有类似的疑问。
这几天在进行gcc 4.5 的升级和glibc的重编译工作,一直不能完美成功,正在肯手册原理中。

作者: 飞龙在天   发布时间: 2009-12-17

引用:
作者: d00m3d
昨天找来 gcc-4.5-20091203 对 QT-3.3.8b 作测试,还没时间重新编译 kde 的库,结果所言非虚,所有依赖 QT 的软件包括 KDE 旗下的及 K3B 之类的即时起飞
刚好新的 snapshot gcc-4.5-20091210 出来又试一下,编译大件的 C 程序如 wine 及 SeaMonkey (Gtk+2 的)依然不能用 -O3,但 -O2 就能正常运作,wine 也能跑软件了,同样有起飞的感觉,但编译内核却能用 -O3。
吾乃贪心之人,一不做,二不休。既然 gcc-4.5 已进 stage 3,亦即是已经"定型",现只作 debug 阶段,於是把 glibc-2.11 也来一遍。呵呵,简直是解胎换骨,好不快哉!
个半月前仍是 stage 1,很不稳定,事隔个半月已有点不可同日而语,gcc-4.5 绝对值得期待。
Btw,编译 gcc-4.5-20091210 多了一个新依赖 mpc,但可轻松搞定。
版主,写个教程吧。给个明灯照照路

作者: 飞龙在天   发布时间: 2009-12-17

正在研究....

作者: yueluck   发布时间: 2009-12-17

问题的回答:
1.因为PATH=/tools/bin,所以gcc是/tools/bin/gcc
2.没有弄清楚ld和ld-linux.so.2的关系.不过我做了实验/bin/ld和/tools/bin/ld都默认去找/lib/ld-linux.so.2,也不知道为什么?
3.编译binutils指定--prefix=path,那么ld的库查找路径就自动加入path/lib.所以ld(不是ld-new)知道去/tools/lib找

作者: yueluck   发布时间: 2009-12-17

ld 是 Binutils 提供的
ld.so 是 Glibc 提供的

作者: tusooa   发布时间: 2009-12-18

引用:
作者: 飞龙在天
版主,写个教程吧。给个明灯照照路
我建议你先看看精华区关於编译源码升级 glibc 的文章

作者: d00m3d   发布时间: 2009-12-19