+ -
当前位置:首页 → 问答吧 → glibc编译出错,请高手帮忙,万分感谢!

glibc编译出错,请高手帮忙,万分感谢!

时间:2007-12-03

来源:互联网

出错如下:
不知道为何帖不上来,所以只能以附件形式上传,是libc.so出错,谢谢!!
上传的图像
glibc make err.png (113.8 KB, 57 次查看)

作者: djstava   发布时间: 2007-12-03

前面是啥命令?

作者: d00m3d   发布时间: 2007-12-04

附件是make的结果,前一命令是configure啊。

作者: djstava   发布时间: 2007-12-04

请再详细一点

作者: d00m3d   发布时间: 2007-12-05

楼主的gcc版本是多少,最好别太旧,建议开始用livecd做LFS

作者: 不开花   发布时间: 2007-12-05

你必须设定march这个参数才行,要不然会出现“undefined reference to `__sync_bool_compare_and_swap_4′.”这个错误
Core 2 Duo,
GCC 4.2,CFLAGS 添加 -march=nocona -mtune=generic。

如果是GCC 4.1,Core Solo/Duo使用-march=prescott;
Core 2 Duo/Solo则使用-march=nocona。
i686等类似设置,例如CFLAGS=”-O2 -march=i686″
-----------------
看到在build ncsd目录时也有错误
如果还有undefined reference to `__stack_chk_guard’ 这个错误的话,你需要手工编辑Makefile,找到这一行:
LDLIBS-nscd = $(selinux-LIBS)
添加 -lssp 即
LDLIBS-nscd = $(selinux-LIBS) -lssp

作者: 不开花   发布时间: 2007-12-05

谢谢楼上的,我用的是gcc-4.2.2。

作者: djstava   发布时间: 2007-12-05

据 SVN 手册里指出,新的 glibc 已不再支援 i386,编译新的 glibc,-march 最低要设成 i486

作者: d00m3d   发布时间: 2007-12-05

高人,再问一下,-march参数是放在哪的?configure 这里不行??

作者: djstava   发布时间: 2007-12-05

这个在lfs的svn版本里面有相关的内容:
代码:
mkdir -v ../glibc-build
cd ../glibc-build
echo "CFLAGS += -march=i486" > configparms
之后configure之类的, 方法就一样了

作者: LanEast   发布时间: 2007-12-05

楼主照11#的做即可
configre 时指定,例如
CFLAGS="-O2 -march=i686" ../glibc-2.7/configure –enable-shared –prefix=/usr –enable-profile=no –enable-add-ons –enable-kernel=2.6.23
(具体参数根据你的具体情况而定)

作者: 不开花   发布时间: 2007-12-05

也可export ,例如
export CFLAGS="-O2 -march=i686"

作者: 不开花   发布时间: 2007-12-05

谢谢楼上各位了,努力!!!

作者: djstava   发布时间: 2007-12-05

为什么我照着楼上做,错误信息还是一样?

作者: djstava   发布时间: 2007-12-06

到底执行过哪些命令?

作者: d00m3d   发布时间: 2007-12-07

我换了个版本2.5.1,竟然通过了。

作者: djstava   发布时间: 2007-12-07

我也试了下,命令如下:
#cd glibc-2.7-build
#CFLAGS="-O2 -march=i686" ../glibc-2.7/configure --prefix=/opt/glibc-2.7 --disable-profile --enable-kernel=2.6.0 --with-headers=/usr/src/linux/include
无错后make,报如下错误:

gcc -shared -static-libgcc -Wl,-O1 -Wl,-z,defs -Wl,-dynamic-linker=/opt/glibc-2.7/lib/ld-linux.so.2 -B/root/source/glibc-build/csu/ -Wl,--version-script=/root/source/glibc-build/libc.map -Wl,-soname=libc.so.6 -Wl,-z,combreloc -Wl,-z,relro -nostdlib -nostartfiles -e __libc_main -L/root/source/glibc-build -L/root/source/glibc-build/math -L/root/source/glibc-build/elf -L/root/source/glibc-build/dlfcn -L/root/source/glibc-build/nss -L/root/source/glibc-build/nis -L/root/source/glibc-build/rt -L/root/source/glibc-build/resolv -L/root/source/glibc-build/crypt -L/root/source/glibc-build/nptl -Wl,-rpath-link=/root/source/glibc-build:/root/source/glibc-build/math:/root/source/glibc-build/elf:/root/source/glibc-build/dlfcn:/root/source/glibc-build/nss:/root/source/glibc-build/nis:/root/source/glibc-build/rt:/root/source/glibc-build/resolv:/root/source/glibc-build/crypt:/root/source/glibc-build/nptl -o /root/source/glibc-build/libc.so -T /root/source/glibc-build/shlib.lds /root/source/glibc-build/csu/abi-note.o /root/source/glibc-build/elf/soinit.os /root/source/glibc-build/libc_pic.os /root/source/glibc-build/elf/sofini.os /root/source/glibc-build/elf/interp.os /root/source/glibc-build/elf/ld.so -lgcc
/root/source/glibc-build/libc_pic.os: In function `__libc_fork':
../nptl/sysdeps/unix/sysv/linux/i386/../fork.c:76: undefined reference to `__sync_bool_compare_and_swap_4'
/root/source/glibc-build/libc_pic.os: In function `nscd_getpw_r':
/root/source/glibc-2.7/nscd/nscd-client.h:320: undefined reference to `__sync_fetch_and_add_4'
/root/source/glibc-build/libc_pic.os: In function `nscd_getpw_r':
/root/source/glibc-2.7/nscd/nscd_getpw_r.c:232: undefined reference to `__sync_fetch_and_add_4'
/root/source/glibc-build/libc_pic.os: In function `nscd_getgr_r':
/root/source/glibc-2.7/nscd/nscd-client.h:320: undefined reference to `__sync_fetch_and_add_4'
/root/source/glibc-build/libc_pic.os: In function `nscd_getgr_r':
/root/source/glibc-2.7/nscd/nscd_getgr_r.c:321: undefined reference to `__sync_fetch_and_add_4'
/root/source/glibc-build/libc_pic.os: In function `nscd_gethst_r':
/root/source/glibc-2.7/nscd/nscd-client.h:320: undefined reference to `__sync_fetch_and_add_4'
/root/source/glibc-build/libc_pic.os:/root/source/glibc-2.7/nscd/nscd_gethst_r.c:400: more undefined references to `__sync_fetch_and_add_4' follow
/root/source/glibc-build/libc_pic.os: In function `__nscd_get_map_ref':
/root/source/glibc-2.7/nscd/nscd_helper.c:404: undefined reference to `__sync_val_compare_and_swap_4'
/root/source/glibc-build/libc_pic.os: In function `*__GI___libc_freeres':
/root/source/glibc-2.7/malloc/set-freeres.c:39: undefined reference to `__sync_bool_compare_and_swap_4'
collect2: ld returned 1 exit status
make[1]: *** [/root/source/glibc-build/libc.so] Error 1
make[1]: Leaving directory `/root/source/glibc-2.7'
make: *** [all] Error 2

作者: tenvin   发布时间: 2007-12-12

换成2.5.1,成功了,不明白2.7为什么不行?

作者: djstava   发布时间: 2007-12-13