LinuxSir.cn,穿越时空的Linuxsir!

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

编译glibc-2.12.1发生错误

[复制链接]
发表于 2010-12-17 14:02:50 | 显示全部楼层 |阅读模式
make[3]: Leaving directory `/mnt/lfs/sources/glibc-2.12.1/elf'
gcc -nostdlib -nostartfiles -o /mnt/lfs/sources/glibc-build/elf/sprof  -Wl,-dynamic-linker=/tools/lib/ld-linux.so.2   -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both /mnt/lfs/sources/glibc-build/csu/crt1.o /mnt/lfs/sources/glibc-build/csu/crti.o `gcc  --print-file-name=crtbegin.o` /mnt/lfs/sources/glibc-build/elf/sprof.o /mnt/lfs/sources/glibc-build/dlfcn/libdl.so.2  -Wl,-rpath-link=/mnt/lfs/sources/glibc-build:/mnt/lfs/sources/glibc-build/math:/mnt/lfs/sources/glibc-build/elf:/mnt/lfs/sources/glibc-build/dlfcn:/mnt/lfs/sources/glibc-build/nss:/mnt/lfs/sources/glibc-build/nis:/mnt/lfs/sources/glibc-build/rt:/mnt/lfs/sources/glibc-build/resolv:/mnt/lfs/sources/glibc-build/crypt:/mnt/lfs/sources/glibc-build/nptl /mnt/lfs/sources/glibc-build/libc.so.6 /mnt/lfs/sources/glibc-build/libc_nonshared.a -Wl,--as-needed /mnt/lfs/sources/glibc-build/elf/ld.so -Wl,--no-as-needed -lgcc -Wl,--as-needed -lgcc_s  -Wl,--no-as-needed `gcc  --print-file-name=crtend.o` /mnt/lfs/sources/glibc-build/csu/crtn.o
LC_ALL=C sed -e 's%@RTLD@%/tools/lib/ld-linux.so.2%g' -e 's%@VERSION@%2.12.1%g' -e 's%@BASH@%/bin/bash%g' -e 's%@TEXTDOMAINDIR@%/tools/share/locale%g' < ldd.bash.in | LC_ALL=C sed -f ../sysdeps/unix/sysv/linux/ldd-rewrite.sed > /mnt/lfs/sources/glibc-build/elf/ldd.new
chmod 555 /mnt/lfs/sources/glibc-build/elf/ldd.new
mv -f /mnt/lfs/sources/glibc-build/elf/ldd.new /mnt/lfs/sources/glibc-build/elf/ldd
gcc sln.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -g -march=i486 -mtune=native -Wstrict-prototypes -mpreferred-stack-boundary=2  -Wa,-mtune=i686    -I../include -I/mnt/lfs/sources/glibc-build/elf -I/mnt/lfs/sources/glibc-build -I../sysdeps/i386/elf -I../nptl/sysdeps/unix/sysv/linux/i386/i686 -I../sysdeps/unix/sysv/linux/i386/i686 -I../nptl/sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux/i386 -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv/i386 -I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../sysdeps/unix/i386 -I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/i386/i686/fpu -I../sysdeps/i386/i686/multiarch -I../nptl/sysdeps/i386/i686 -I../sysdeps/i386/i686 -I../sysdeps/i386/i486 -I../nptl/sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../nptl/sysdeps/i386 -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl  -I.. -I../libio -I. -nostdinc -isystem /mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.5.1/include -isystem /mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.5.1/include-fixed -isystem /tools/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h   -DNOT_IN_libc=1    -o /mnt/lfs/sources/glibc-build/elf/sln.o -MD -MP -MF /mnt/lfs/sources/glibc-build/elf/sln.o.dt -MT /mnt/lfs/sources/glibc-build/elf/sln.o
gcc -nostdlib -nostartfiles -static -o /mnt/lfs/sources/glibc-build/elf/sln    /mnt/lfs/sources/glibc-build/csu/crt1.o /mnt/lfs/sources/glibc-build/csu/crti.o `gcc  --print-file-name=crtbegin.o` /mnt/lfs/sources/glibc-build/elf/sln.o  /mnt/lfs/sources/glibc-build/libc.a -lgcc -lgcc_eh  /mnt/lfs/sources/glibc-build/libc.a `gcc  --print-file-name=crtend.o` /mnt/lfs/sources/glibc-build/csu/crtn.o
/mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lgcc_eh
collect2: ld returned 1 exit status
make[2]: *** [/mnt/lfs/sources/glibc-build/elf/sln] Error 1
make[2]: Leaving directory `/mnt/lfs/sources/glibc-2.12.1/elf'
make[1]: *** [elf/others] Error 2
make[1]: Leaving directory `/mnt/lfs/sources/glibc-2.12.1'
make: *** [all] Error 2
发表于 2010-12-17 15:09:28 | 显示全部楼层
错误提示中有如下信息:

ld: cannot find -lgcc_eh


LFS 文档中的说明及命令(第五章 gcc 第一遍):

Using --disable-shared means that the libgcc_eh.a file isn't created and installed. The Glibc package depends on this library as it uses -lgcc_eh within its build system. This dependency can be satisfied by creating a symlink to libgcc.a, since that file will end up containing the objects normally contained in libgcc_eh.a:

  1. ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
  2.     sed 's/libgcc/&_eh/'`
复制代码


应该是你忘了执行这个命令或者是这个命令执行的时候出了什么问题, 可以针对这个部分来检查.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-17 15:38:29 | 显示全部楼层
我刚执行的呀!不过似乎在删掉glibc-build之后执行的,这个有影响吗?
回复 支持 反对

使用道具 举报

发表于 2010-12-17 15:48:40 | 显示全部楼层
你说的是删除 gcc-build 之后执行吧? 这个是无所谓的.

执行这个命令的输出是什么?

PS: 做 LFS, 最好能理解这些命令的含义, 作用, 不然的话 LFS 的意义就不太大了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-17 17:19:47 | 显示全部楼层
lfs:/mnt/lfs/sources/gcc-build$ ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
>     sed 's/libgcc/&_eh/'`
bash: -gcc: command not found
`./libgcc.a' -> `libgcc.a'
回复 支持 反对

使用道具 举报

发表于 2010-12-17 17:48:35 | 显示全部楼层
那就是你们设置 LFS_TGT 环境变量, 那你一开始的 gcc 编译的时候没有提示么? gcc 在 configure 的时候用的是这样的命令:


  1. ../gcc-4.5.1/configure \
  2.     --target=$LFS_TGT --prefix=/tools \
  3.     --disable-nls --disable-shared --disable-multilib \
  4.     --disable-decimal-float --disable-threads \
  5.     --disable-libmudflap --disable-libssp \
  6.     --disable-libgomp --enable-languages=c \
  7.     --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
  8.     --without-ppl --without-cloog
复制代码


里面有 --target=$LFS_TGT 如果你没设置 LFS_TGT 环境变量, 那应该是会有错误提示的啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-18 20:19:41 | 显示全部楼层
Post by LanEast;2123280
那就是你们设置 LFS_TGT 环境变量, 那你一开始的 gcc 编译的时候没有提示么? gcc 在 configure 的时候用的是这样的命令:


  1. ../gcc-4.5.1/configure \
  2.     --target=$LFS_TGT --prefix=/tools \
  3.     --disable-nls --disable-shared --disable-multilib \
  4.     --disable-decimal-float --disable-threads \
  5.     --disable-libmudflap --disable-libssp \
  6.     --disable-libgomp --enable-languages=c \
  7.     --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
  8.     --without-ppl --without-cloog
复制代码


里面有 --target=$LFS_TGT 如果你没设置 LFS_TGT 环境变量, 那应该是会有错误提示的啊


我是直接复制gcc的configure部分的
回复 支持 反对

使用道具 举报

发表于 2010-12-18 21:28:23 | 显示全部楼层
LFS_TGT 是在第四章设置的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-20 10:43:04 | 显示全部楼层
Post by LanEast;2123398
LFS_TGT 是在第四章设置的


这段设置环境变量的工作,已经做了呀!
回复 支持 反对

使用道具 举报

发表于 2010-12-22 00:00:21 | 显示全部楼层
Post by mylife_linux;2123531
这段设置环境变量的工作,已经做了呀!


那就说明没做好
回复 支持 反对

使用道具 举报

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

本版积分规则

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