linux - lfs glibc编译ld错误

标签 linux ld glibc linux-from-scratch

我的主机系统是 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): In function `getanswer':
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:180: undefined reference to `__stack_chk_guard'
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:483: undefined reference to `__stack_chk_guard'
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os): In function `res_gethostbyaddr':
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:644: undefined reference to `__stack_chk_guard'
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:783: undefined reference to `__stack_chk_guard'
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os): In function `__GI_res_gethostbyname2':
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:510: undefined reference to `__stack_chk_guard'
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:636: more undefined references to `__stack_chk_guard' follow
collect2: error: ld returned 1 exit status
make[2]: *** [/mnt/lfs/sources/glibc-build/resolv/libresolv.so] Error 1
make[2]: Leaving directory `/mnt/lfs/sources/glibc-2.17/resolv'
make[1]: *** [resolv/others] Error 2
make[1]: Leaving directory `/mnt/lfs/sources/glibc-2.17'
make: *** [all] Error 2

最佳答案

我找到了解决这个问题的办法:

在 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

关于linux - lfs glibc编译ld错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787684/

相关文章:

c - 如何预处理 ld 链接描述文件?

node.js - Node :/lib64/libc. so.6:找不到版本 `GLIBC_2.9'( Node 需要)

C 程序链接到错误版本的函数

python - Selenium WebDriverException - 无法访问 chrome

java - 如何将 Vector 的内容转储到新文件中?

linux - HAProxy tcp方式源客户端ip

linux - 在容器中运行 apt update && apt install -y sudo 失败

gcc - 在 64 位 Linux 上编译 32 位 at&t 汇编程序不起作用

linux - 即使有存档组也无法在 Linux 上链接

c - __insn_seqb() 和 __insn_ctz 是什么意思?