gpt4 book ai didi

linux - GNU C 库 (glibc) 编译期间出错

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:08 32 4
gpt4 key购买 nike

我没有系统管理经验,也没有编译基于 C 的程序的技术细节,所以如果我说得不准确,请耐心等待。

基本上,我使用的计算集群具有相对较旧的操作系统(Red Hat Enterprise Linux 4.3,从 ~2006 年起),我没有 root 访问权限。我在编译各种程序时经常遇到问题。我发现的一个常见原因是过时的库,尤其是 C 库。我决定编译最新版本的 glibc,认为链接到这个新的 C 库可以解决我的许多问题(听起来不错吗?)。这让我陷入了安装更新版本的 gcc 及其依赖项(包括现代 Linux 内核头文件)的困境。

无论如何,我相信我有一个gcc的工作版本。现在,当我尝试使用这个新的 gcc 编译 glibc 时,我在编译过程中遇到了错误,如下所示(这些是最后几行):

[...]
make[2]: Leaving directory `/home/bgrande/software/apollo/src/glibc-2.19/login'
make subdir=elf -C elf ..=../ subdir_lib
make[2]: Entering directory `/home/bgrande/software/apollo/src/glibc-2.19/elf'
Makefile:896: *** target `.dyn' leaves prerequisite pattern empty. Stop.
make[2]: Leaving directory `/home/bgrande/software/apollo/src/glibc-2.19/elf'
make[1]: *** [elf/subdir_lib] Error 2
make[1]: Leaving directory `/home/bgrande/software/apollo/src/glibc-2.19'
make: *** [all] Error 2

我不明白什么

Makefile:896: *** target `.dyn' leaves prerequisite pattern empty.  Stop.

意味着,更重要的是,什么可以解决这个问题。 Google 和 Stack Overflow 搜索没有找到任何结果。

我知道这可能是由于与我的系统环境相关的某些原因造成的,尽管我不知道到底是什么。如果我可以提供更多有帮助的信息,请告诉我。我希望有一个解决方案,但也希望有一个解决方案的基本原理,也许还有一种解释错误的方法以供将来引用。谢谢!

更新:按照 @andrewdotn 的建议安装更新版本的 Make (make-4.0) 确实解决了该错误,但稍后在编译中又出现了另一个错误(见下文)。有任何想法吗?

[...]
/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv_pic.a(ns_print.os): In function `__GI_ns_sprintrrf':
/home/bgrande/software/apollo/src/glibc-2.19/resolv/ns_print.c:99: undefined reference to `__stack_chk_guard'
/home/bgrande/software/apollo/src/glibc-2.19/resolv/ns_print.c:728: undefined reference to `__stack_chk_guard'
/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv_pic.a(gethnamaddr.os): In function `getanswer':
/home/bgrande/software/apollo/src/glibc-2.19/resolv/gethnamaddr.c:180: undefined reference to `__stack_chk_guard'
/home/bgrande/software/apollo/src/glibc-2.19/resolv/gethnamaddr.c:483: undefined reference to `__stack_chk_guard'
/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv_pic.a(gethnamaddr.os): In function `__GI_res_gethostbyname2':
/home/bgrande/software/apollo/src/glibc-2.19/resolv/gethnamaddr.c:510: undefined reference to `__stack_chk_guard'
/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv_pic.a(gethnamaddr.os):/home/bgrande/software/apollo/src/glibc-2.19/resolv/gethnamaddr.c:636: more undefined references to `__stack_chk_guard' follow
collect2: error: ld returned 1 exit status
../Makerules:438: recipe for target '/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv.so' failed
make[2]: *** [/home/bgrande/software/apollo/glibc-2.19/resolv/libresolv.so] Error 1
make[2]: Leaving directory '/home/bgrande/software/apollo/src/glibc-2.19/resolv'
Makefile:213: recipe for target 'resolv/others' failed
make[1]: *** [resolv/others] Error 2
make[1]: Leaving directory '/home/bgrande/software/apollo/src/glibc-2.19'
make: *** [all] Error 2

最佳答案

这听起来像是由旧版本的 Make 引起的。 RHEL 4.3 使用 2002 年的 Make 3.80。尝试下载 Make 3.82 or 4.0 from ftp.gnu.org ,在您的主目录中构建它,并使用它来驱动编译。

关于linux - GNU C 库 (glibc) 编译期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261970/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com