linux 如何解决编译期间的GLIBC错误?

nszi6y05  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(357)

在Red Hat Enterprise Linux Server版本7上。9 with ldd version = ldd(GNU libc)2.17,当我尝试使用makefile构建代码时,会看到以下错误:

//usr/lib64/libresolv.so.2: undefined reference to `__resolv_context_get@GLIBC_PRIVATE'
//usr/lib64/libresolv.so.2: undefined reference to `__h_errno@GLIBC_PRIVATE'
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libpci.so: undefined reference to `memcpy@GLIBC_2.14'
//usr/lib64/libresolv.so.2: undefined reference to `__resolv_context_get_override@GLIBC_PRIVATE'
//usr/lib64/libresolv.so.2: undefined reference to `__sendmmsg@GLIBC_PRIVATE'
//usr/lib64/libresolv.so.2: undefined reference to `__resolv_context_get_preinit@GLIBC_PRIVATE'
//usr/lib64/libresolv.so.2: undefined reference to `__resolv_context_put@GLIBC_PRIVATE'
collect2: error: ld returned 1 exit status

如何解决此问题?
目前的ldd版本是2。17、我应该尝试升级GLIBC吗?这是一个新安装的服务器,我是否缺少任何配置?

s2j5cfk0

s2j5cfk01#

请注意,ldd(您引用的内容)和ld(您调用的内容)是完全不同的程序。
您应该在问题中显示您调用的实际命令。我怀疑你直接调用ld。这通常不是一个好主意,除非你有非常具体的(和相对不寻常的)需求。通常你会使用编译器前端(e.例如gcc或其他)来链接您的程序;它将在添加所有相关库之后调用ld本身。
但是,如果您使用的是解析器,您可能需要将-lresolv添加到您的链接线。

相关问题