'make check' GLIBC 运行时的链接问题
Linking Issues when running 'make check' GLIBC
我目前正在尝试在 linux 3.10.0-1062.9.1.el7.x86_64 系统上编译 glibc-2.30,因为它当前运行的是 2.17。
编译环境包括通过 spack 加载的以下内容:-binutils-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
(dir 在下面引用为 $kern_headers(
-libgd-2.2.4
上述所有必需的依赖项也随 spack 一起加载和安装。
我已经将 glibc 克隆到 $HOME/lib/glibc 并签出了 glibc-2.30 存储库。
从 $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 检测到不一致:get-dynamic-info.h: 147:elf_get_dynamic_info:
断言"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 的链接器。 此外,它指向一个空目录,因为我在此阶段尚未完成make install
将其安装到 --prefix 中列出的目录中。
无论如何,我都尝试运行make install
,但是如果我尝试使用 rpath 和动态链接器编译设置使用 --prefix 目录树中的 libc.so 编译测试程序,我会收到完全相同的断言错误消息。
编译命令失败的示例:
env GCONV_PATH=$HOME/lib/glibc_build/iconvdata \ LOCPATH=$HOME/lib/glibc_build/localedata LC_ALL=C \$HOME/lib/glibc_build/elf/ld-linux-x86-64.so.2 --library-path \$HOME/lib/glibc_build:$HOME/lib/glibc_build/math:\$HOME/lib/glibc_build/elf:$HOME/lib/glibc_build/dlfcn:\$HOME/lib/glibc_build/nss:$HOME/lib/glibc_build/nis:\$HOME/lib/glibc_build/rt:$HOME/lib/glibc_build/
resolv:\$HOME/
lib/glibc_build/mathvec:$HOME/lib/glibc_build/support:\$HOME/lib/glibc_build/crypt:$HOME/lib/glibc_build/nptl \$HOME/lib/glibc_build/csu/test-as-const-ucontext_i \$HOME/lib/glibc_build/csu/test-as-const-ucontext_i.out; \ ../scripts/evaluate-test.sh csu/test-as-const-ucontext_i $?假 假\ $HOME/lib/glibc_build/csu/test-as-const-ucontext_i.test-result 检测到不一致 ld.so: get-dynamic-info.h: 147: elf_get_dynamic_info:断言"信息[DT_RPATH] == 空"失败!
作为健全性检查,我在其中一个区域设置输出的可执行文件上运行ldd,它给出:
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)
不要注意ldd
输出:它会欺骗你,而且大多毫无意义。
- 使用jsoncpp库时出现链接问题
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- 未解决的外部链接问题
- 'make check' GLIBC 运行时的链接问题
- 在树莓派上用libtorch构建程序时的链接问题
- 野牛弹性链接问题
- 与 AWS 开发工具包的链接问题
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 链接问题 boost::p ython::numpy.
- 与 32 位共享对象的链接问题
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 安卓链接问题
- LLVM 传递链接问题:未定义的符号
- Cmake Mac OSX库链接问题:在Linux上进行编译,但在Mac上进行了编译
- 用libclang解析源文件 - 链接问题包括文件
- C / C++链接问题与非常简单的设置
- Zbar 在 vs2015 链接问题
- Vulkan + GLFW + Cmake在Linux环境下的链接问题
- TFS构建由于链接问题而失败