我想将我的"glibc 2.34“降级为2.27版本,因为当我在我的机器上运行./test_121
时,它给了我以下错误:
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./test_121)
我的机器正在使用这个版本的ldd (Ubuntu GLIBC 2.27-3ubuntu1.5) 2.27
。
我在我的主机上安装了glibc 2.27并使用tar -xf glibc-2.27
提取它,但是我不知道如何执行它。或者使用2.27编译器执行gcc -o test_121
。
发布于 2022-10-16 19:47:48
我想将我的"glibc 2.34“降级为2.27版本,因为当我在我的机器上运行./test_121时,它给了我这个错误:
unbootable.
GLIBC-2.34
--它有GLIBC-2.27
,从2.27降级到2.27没有意义。您的问题是这个二进制文件:./test_121
是针对GLIBC-2.34
(或更高版本)构建的,需要运行该版本(或更新版本)。
您唯一的选择是在较新的系统(或在带有GLIBC-2.34
或更新版本的坞容器中)上运行该二进制文件,或者获得不同的二进制文件(需要GLIBC-2.27
或更高版本的二进制文件)。
发布于 2022-10-17 08:37:18
请求GLIBC-2.34
的二进制文件意味着该二进制文件是针对Glibc 2.34或更高版本编译的,它依赖于在该版本之前不可用的一些ABI,否则就不会创建依赖项。
解决这个问题的一个选择是调优所使用的API,直到您不再满足这一要求(但这是有问题的/困难的),您可以通过在二进制文件上使用readelf -W -s
找到问题所在,这将显示所有已使用的符号,名称中带有@
的符号都是版本符号。
避免这种情况的正确方法是设置一个类似于预期目标的"sysroot“树,并使用编译器的--sysroot
标志(由GCC和Clang支持)交叉编译您的应用程序。sysroot环境可以通过在仿真器或另一台计算机上安装一个系统,然后复制它,或者使用debootstrap
(用于基于Debian的发行版)、rinse
或rhbootstrap
(用于基于红帽的发行版)等工具来创建,或者您可以创建一个通用的工具,手动构建基本系统或使用某些构建系统(例如buildroot
或openembedded/poky
)。通过这种方式,结果将保证与它编译的版本一起工作。
https://stackoverflow.com/questions/74089622
复制相似问题