C++ 运行时链接问题';进行检查';格利伯

C++ 运行时链接问题';进行检查';格利伯,c++,c,linux,ld,glibc,C++,C,Linux,Ld,Glibc,我目前正在尝试在linux 3.10.0-1062.9.1.el7.x86_64系统上编译glibc-2.30,因为它目前运行的是2.17。 编译环境包括通过spack加载的以下内容: -比努蒂尔斯-2.33.1%gcc@9.2 -gcc@9.2+piclibs binutils=binutils-2.33 -gmake@4.2.1 -libcap-2.25 -linux-headers-4.9.10(目录在下面引用为$kern_headers) -libgd-2.2.4 以上所需的所有依赖项也

我目前正在尝试在linux 3.10.0-1062.9.1.el7.x86_64系统上编译glibc-2.30,因为它目前运行的是2.17。
编译环境包括通过spack加载的以下内容:
-比努蒂尔斯-2.33.1%gcc@9.2
-gcc@9.2+piclibs binutils=binutils-2.33
-gmake@4.2.1
-libcap-2.25
-linux-headers-4.9.10(目录在下面引用为$kern_headers)
-libgd-2.2.4
以上所需的所有依赖项也已加载并与spack一起安装

我已将glibc克隆到$HOME/lib/glibc,并签出了glibc-2.30 repo。
在$HOME/lib/glibc_build中,我运行以下配置以确保正确使用上述软件包:

../glibc/configure --prefix=$HOME/lib/gnu/glibc_v2 CC="$gcc_bin/gcc -m64" --with-headers=$kern_headers CFLAGS=" -O3" CXXFLAGS=" -O3 -std=c++17" --with-binutils=$binutils_base/bin
其次是:

make -j40
这本书没有问题。然而,当我跑的时候

make check
我最终得到以下错误的多个实例:

ld.so检测到不一致:获取动态信息。h:147:
elf_get_dynamic_info:Assertion`info[DT_RPATH]==NULL'失败

作为一项健全性检查,我在一个区域设置输出的可执行文件上运行ldd,该文件提供:

linux vdso.so.1=>(0x00007fffc4123000)
libc.so.6=>/lib64/libc.so.6(0x00002b9080d40000)
$HOME$/lib/gnu/glibc_v2/lib/ld-linux-x86-64.so.2=>/lib64/ld-linux-x86-64.so.2(0x00002b9080b1c000)

这对我来说毫无意义,因为它仍然在使用旧的链接器,而不是来自binutils的链接器。另外,它指向一个空目录,因为我在这个阶段没有执行
makeinstall
,将其安装到--prefix中列出的目录


我已经尝试运行
makeinstall
,但是如果我尝试使用libc.so在--prefix目录树中使用rpath和动态链接器编译设置编译测试程序,我会得到完全相同的断言错误消息

编译命令失败的示例:

env GCONV_PATH=$HOME/lib/glibc_build/iconvdata\ LOCPATH=$HOME/lib/glibc\u build/localedata LC\u ALL=C\
$HOME/lib/glibc_build/elf/ld-linux-x86-64.so.2——库路径\
$HOME/lib/glibc\u build:$HOME/lib/glibc\u build/math:\
$HOME/lib/glibc\u build/elf:$HOME/lib/glibc\u build/dlfcn:\
$HOME/lib/glibc\u build/nss:$HOME/lib/glibc\u build/nis:\
$HOME/lib/glibc\u build/rt:$HOME/lib/glibc\u build/resolv:\
$HOME/lib/glibc\u build/mathvec:$HOME/lib/glibc\u build/support:\
$HOME/lib/glibc_build/crypt:$HOME/lib/glibc_build/nptl\
$HOME/lib/glibc\u build/csu/test-as-const-ucontext\u i\

$HOME/lib/glibc\u build/csu/test-as-const-ucontext\u i.out;\/脚本/evaluate-test.sh csu/test-as-const-ucontext\u i$?假的 假的\ $HOME/lib/glibc_build/csu/test-as-const-ucontext_i.test-result不一致由ld.so检测到:获取动态信息。h:147: elf_get_dynamic_info:Assertion`info[DT_RPATH]==NULL'失败

作为一项健全性检查,我在一个区域设置输出的可执行文件上运行ldd,该文件提供:


不要注意
ldd
输出:它将欺骗您,而且基本上没有意义。

“如果我尝试使用libc编译测试程序,那么在--prefix目录树中使用rpath和动态链接器编译设置,我会得到完全相同的断言错误消息。”--您使用的命令是什么?很抱歉延迟。我在下面的帖子中遵循了Ciro的指示:经过进一步的挖掘,我发现设置的RPATH与GCC相关。我目前正在努力追踪这是如何通过的。我发现了一些与同一问题相关的旧信息,但我无法缩小范围。思想?
libc.so.6 => /lib64/libc.so.6 (0x00002b9080d40000)
$HOME$/lib/gnu/glibc_v2/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00002b9080b1c000)