LinuxSir.cn,穿越时空的Linuxsir!

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

[原创]LFS 6.2 装系统(Chapter 6)时发现工具链没完全搞好的补救办法

[复制链接]
发表于 2006-9-5 09:13:53 | 显示全部楼层 |阅读模式
mv /tools/bin/{ld,ld-new}
mv /tools/bin/{ld-old,ld}
rm /tools/$(gcc -dumpmachine)/bin/{ld-old,ld}
ln -s /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld

SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE

然后测试一下

echo "main(){}">dummy.c
cc dummy.c -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /tools/lib'
/* 确保输出的是工具链里的ld-linux.so.2 */
grep SEARCH dummy.out
/* 确保库文件的搜索顺序中第一个是/tools里的 */

然后就可以把没干完的事情干掉了,比如重新编译安装某程序之类的...

呵呵,昨天装的时候遇到的,工具链perl没装对,尝试了一下竟然成功了,贴一下
发表于 2006-9-5 09:42:58 | 显示全部楼层
修复之前,那个 dummy 测试输出的是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-5 09:58:12 | 显示全部楼层
是/lib里的各种库,编译工具链程序的时候用的是工具链里的gcc和glibc

发现改变编译出来的程序需要的库的位置不但和gcc的spec有关,还和ld有关-_-b
偶就做出过readelf显示/tools/lib,dummy.out里面是/lib的怪胎程序...-_-b
回复 支持 反对

使用道具 举报

发表于 2006-9-5 10:27:06 | 显示全部楼层
6.1可不可以使用啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-6 12:09:17 | 显示全部楼层
没试过,应该差不多吧,把
SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE
改成LFS 6.1里面描述的改specs的操作就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则

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