3

我的主机系统是 Linux debian 2.6.32-5-amd64 #1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64 GNU/Linux。我想构建一个 LFS,而 glibc 编译现在阻止了我。以下是错误提示,谢谢。

/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):在函数“getanswer”中:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:180:未定义对“__stack_chk_guard”的引用
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:483:未定义对“__stack_chk_guard”的引用
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):在函数“res_gethostbyaddr”中:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:644:未定义对“__stack_chk_guard”的引用
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:783:未定义对“__stack_chk_guard”的引用
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):在函数`__GI_res_gethostbyname2'中:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:510:未定义对“__stack_chk_guard”的引用
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:636:更多未定义的对“__stack_chk_guard”的引用
collect2:错误:ld 返回 1 个退出状态
make[2]: *** [/mnt/lfs/sources/glibc-build/resolv/libresolv.so] 错误 1
make[2]: 离开目录`/mnt/lfs/sources/glibc-2.17/resolv'
make[1]: *** [解决/其他] 错误 2
make[1]: 离开目录`/mnt/lfs/sources/glibc-2.17'
make: *** [全部] 错误 2
4

2 回答 2

3

我找到了解决此问题的解决方案:

在 gcc 的第一遍之前由 gcc 源中的这个 sed 修复:

sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure

和:

sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c

但是这些已经在 LFS 手册中提到了。我不知道为什么当我开始使用 LFS 时我没有看到它们 :D

于 2014-12-22T11:15:09.877 回答
1

您的 gcc 启用了堆栈保护。

要克服此错误:

CFLAGS="-fno-stack-protector -O2" ./configure --prefix=/somepath

在我的系统上我跑了:

mkdir 构建

光盘构建

CFLAGS="-fno-stack-protector -O2" ../configure --prefix=/usr/test_glibc

于 2013-11-05T17:02:30.953 回答