LinuxSir.cn,穿越时空的Linuxsir!

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

LFS6.1的toolchain安装顺序可以更改嘛?

[复制链接]
发表于 2006-2-24 17:15:42 | 显示全部楼层 |阅读模式
第一个问题:
5.3. Binutils-2.15.94.0.2.2 - 第一遍
5.4. GCC-3.4.3 - 第一遍
这2个是否可以倒置?
先安装gcc,后安装binutils。

第二个问题:
5.11. GCC-3.4.3 - 第二遍
5.12. Binutils-2.15.94.0.2.2 - 第二遍
这2个提前到5.8. Tcl-8.4.9之前。

暂时就这2个问题,希望大家尝试,讨论。
个人意见:完全可以,没有任何影响。
发表于 2006-2-24 19:25:54 | 显示全部楼层
第一个,不知道系统如果没有binutils的话。
如果没有,gcc能否编译通过。
如果有的话,那么应该没什么很大的问题。

第二个,你可以不装 tcl/expect/dejagnu,他们是为了运行 make test 而安装的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 22:26:54 | 显示全部楼层
gcc在第一遍时,用主机的ld和/tools/bin下面的新ld,对自身没有任何影响。
而gcc先于ld,这个gcc回头编译其他软件的时候就用host的ld了。对lib产生致命错误!!
这个问题在讨论gcc使用的静态连接器时说过。

ld第一遍编译时,使用主机的gcc和/tool/bin下面新生成的gcc,对自身和后续没有影响。

如果gcc先编译,编译后应该立即把host的ld转移或者重命名,只有这样才可以用/tools/bin下的ld.才不会导致lib错误
回复 支持 反对

使用道具 举报

发表于 2006-2-24 23:01:37 | 显示全部楼层
我们什么时候讨论过 静态连接器 了?

主系统的东西,最好别动,这个就是为什么要用 lfs 用户的原因。

先装 binutils,这样编译gcc的时候使用 ld 是找 /usr/lib:/lib:/usr/local/lib 的。

先装 gcc,ld 就是用主机的,也是找 /usr/lib:/lib/usr/local/lib的。似乎没什么很大的区别。就是 binutils 的版本也许比较低。

第一次调整工具链之前,我觉得没那么多麻烦的。你想先装 binutils 或者 gcc 都可以。呵呵。
然后编译 binutils,这个时候 binutils 用的是新编译的gcc,这样似乎也没什么问题。

早期的顺序,也许并不是非常重要,就是第五章结束的时候,要保证 /tools 下边的程序都是连接到 /tools/lib/ld-linux.so.2,还有保证 ld 是在 /tools/lib 查找库,gcc的specs别错了,就基本上差不多了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 23:05:39 | 显示全部楼层
补充一下:
LFS任意步中,想知道当前的toolchain使用是否正确
ldd /tools/bin/xxx

看输出结果就可以了。
ld.so决定了使用的gcc是否正确
其他的.so决定了使用的ld是否正确
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 23:14:23 | 显示全部楼层

贵人多忘事:)

Post by 终极幻想
我们什么时候讨论过 静态连接器 了?

[color="Red"]http://www.linuxsir.cn/bbs/showthread.php?t=243103

主系统的东西,最好别动,这个就是为什么要用 lfs 用户的原因。

先装 binutils,这样编译gcc的时候使用 ld 是找 /usr/lib:/lib:/usr/local/lib 的
没问题


先装 gcc,ld 就是用主机的,也是找 /usr/lib:/lib/usr/local/lib的。似乎没什么很大的区别。就是 binutils 的版本也许比较低。
不止是版本低的问题吧。gcc对ld有依赖性的,在那个静态连接器的帖子里有介绍。这样新的gcc和主机的ld成了一家人,而主机的ld和/lib又是一家人,问题就产生了啊
将来必然导致lib错误!!


版主真是贵人多忘事啊,才几天的事就不记得了。呵呵
我的分析应该还有点道理吧,不信,可以试试的。
回复 支持 反对

使用道具 举报

发表于 2006-2-24 23:22:14 | 显示全部楼层
Post by good02xaut
版主真是贵人多忘事啊,才几天的事就不记得了。呵呵
我的分析应该还有点道理吧,不信,可以试试的。


实在对不起,这几天我没日没夜的在看 Xen 和 Cross Complier,一个星期前的帖子我的确忘记了。。

我觉得可行,不需要实验:p 。

静态连接的那个,是specs文件指定的,读一下 specs 文件就知道了。里边的那个 -static。
回复 支持 反对

使用道具 举报

发表于 2006-2-24 23:30:35 | 显示全部楼层
LFS重在实践,光分析没用,还是要结合到实践中去,否则会成为经验主义的.
(我现在比较赞同可以调换位置的说法.)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-24 23:58:48 | 显示全部楼层
静态连接的那个,是specs文件指定的,读一下 specs 文件就知道了。里边的那个 -static。
这个不明白,通过specs文件可以指定gcc使用的静态连接器吗?上次讨论你可没有提到啊。
我现在LFS的gcc编译了第2次,
/tools/lib/gcc/i686-pc-linux-gnu/4.0.2/目录下面居然没有spces文件,暂时无法验证你的新见解。

LFS重在实践,光分析没用,还是要结合到实践中去,否则会成为经验主义的.
我现在比较赞同可以调换位置的说法


重在实践没错,但是gcc,ld,toolchain他们之间的游戏规则是固定的,不会随着我们的实践而改变。在不知道的前提下,应该用实践去推测规则。而不仅仅是走个过程。
知道怎么做的同时,更应该关心一下为什么这样做,或者为什么这个样子的。

绝对不可以调换位置的,原因和解决方案前面都说了。
或许真的需要实践一下才更有说服力,谁让我不是制定游戏规则的呢。呵呵
回复 支持 反对

使用道具 举报

发表于 2006-2-25 01:03:15 | 显示全部楼层
为什么会没有 specs 文件呢,你怎么调整工具链的?调整后文件应该存在的啊。。你想看的话,gcc -dumpspecs 就可以了。你还是没仔细看 book。



绝对不可以调换位置的,原因和解决方案前面都说了。

这句话不会是我说的吧。。。。。:beat

我还是建议先作一次 LFS,再去品尝。一开始研究半天,收获不大。
回复 支持 反对

使用道具 举报

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

本版积分规则

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