LinuxSir.cn,穿越时空的Linuxsir!

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

[求助]编译lfs进行到5.7的时候出错了

[复制链接]
发表于 2005-10-29 14:11:24 | 显示全部楼层 |阅读模式
我使用的是VMware 5.0 + LFS v6.1.3 livecd

我是按照本站发布的lfs6.1非官方中文手册上的步骤进行的,在进行到5.7
调整工具链,进行到
echo 'main(){}' > dummy.c
cc dummy.c
出现如下的错误信息:
/mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/3.4.3/../../../../i686-pc-linux-gnu/bin/ld: ld-linux.so.2, needed by /tools/lib/libc.so.6. not found (try using -rpath or -rpath-link)
/tools/lib/libc.so.6: undefined reference to `_rtld_globa@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_libc_enable_secure@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_libc_stack_end@GLIBC_2.1'
/tools/lib/libc.so.6: undefined reference to `_rtld_globa_ro@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `_dl_out_of_memory@GLIBC_PRIVATE'
/tools/lib/libc.so.6: undefined reference to `__tls_get_addr@GLIBC_2.3'
/tools/lib/libc.so.6: undefined reference to `_r_debug@GLIBC_2.0'
/tools/lib/libc.so.6: undefined reference to `_ld_argv@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
发表于 2005-10-29 22:29:19 | 显示全部楼层
缺libc.so.6吧
你可能需要重新编译glibc吧(看看它的md5对不对)
6.11.4. Contents of Glibc
安装的程序:
catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump, zic

安装的库:
ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so](这里), libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so, libutil.[a,so]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-29 22:43:01 | 显示全部楼层
glibc?我是直接从LFS v6.1.3的livecd中直接cp的,而且每一条编译指令我都核对过两遍!
下午我又重新安装了一遍,还是同样的错误!
出现这个问题还会是什么引起的?

明天再试一下!
回复 支持 反对

使用道具 举报

发表于 2005-10-30 10:15:19 | 显示全部楼层

检查

查一下cc这个link是不是->gcc?

如果是,再查一下ldd /tools/bin/gcc

把结果贴出
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-30 19:05:51 | 显示全部楼层
cc这个link是->gcc!

另一个我再检查一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-30 20:59:48 | 显示全部楼层
执行 ldd /tools/bin/gcc
显示:
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7efe000)
/lib/ld-linux.so.2 (0xb7fee000)

PS:
$PATH=/tools/bin/:/bin:/usr/bin
$LFS=/mnt/lfs

大侠们,问题可能出在那里?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-30 21:15:14 | 显示全部楼层
斑竹大人出来指点一下吧,我已经搞了三遍,每次到这都是这个相同的问题!
郁闷呀!
回复 支持 反对

使用道具 举报

发表于 2005-10-30 21:19:13 | 显示全部楼层

很明显是错了,

几个->都应该是指向/tools/lib目录的,
你真的是严格按书上做的吗?

是不是有什么地方没有注意到?


几天后的注明:
这个时候ldd /tools/bin/gcc的结果,几个->还是指向/lib的。 :sorry
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-30 21:22:45 | 显示全部楼层
我是按照书上说得做的!

你估计问题大概出在哪步?
回复 支持 反对

使用道具 举报

发表于 2005-10-30 21:24:11 | 显示全部楼层

说的详细点吧

在这一节之前的几个组件的编译用的都是host的/lib里的库。
但是在安装glibc以及之后的调整工具链做完之后,
你的gcc运行时连的库都应该是/tools/lib里的。
下面的这段脚本正是在做这个更改:
SPECFILE=`gcc --print-file specs` &&
sed 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
    $SPECFILE > tempspecfile &&
mv -f tempspecfile $SPECFILE &&
unset SPECFILE


另外还有个应该注意的地方:上面这段脚本中只有两个单引号,另外两个不是,是TAB键上面那个东东。
回复 支持 反对

使用道具 举报

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

本版积分规则

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