首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将glibc 2.34降至glibc-2.27

如何将glibc 2.34降至glibc-2.27
EN

Stack Overflow用户
提问于 2022-10-16 18:14:41
回答 2查看 414关注 0票数 -1

我想将我的"glibc 2.34“降级为2.27版本,因为当我在我的机器上运行./test_121时,它给了我以下错误:

代码语言:javascript
运行
复制
/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

EN

回答 2

Stack Overflow用户

发布于 2022-10-16 19:47:48

我想将我的"glibc 2.34“降级为2.27版本,因为当我在我的机器上运行./test_121时,它给了我这个错误:

unbootable.

  • You
  1. 降级GLIBC很可能会使您的系统完全误解错误--您的系统一开始没有GLIBC-2.34 --它有GLIBC-2.27,从2.27降级到2.27没有意义。

您的问题是这个二进制文件:./test_121是针对GLIBC-2.34 (或更高版本)构建的,需要运行该版本(或更新版本)。

您唯一的选择是在较新的系统(或在带有GLIBC-2.34或更新版本的坞容器中)上运行该二进制文件,或者获得不同的二进制文件(需要GLIBC-2.27或更高版本的二进制文件)。

票数 1
EN

Stack Overflow用户

发布于 2022-10-17 08:37:18

请求GLIBC-2.34的二进制文件意味着该二进制文件是针对Glibc 2.34或更高版本编译的,它依赖于在该版本之前不可用的一些ABI,否则就不会创建依赖项。

解决这个问题的一个选择是调优所使用的API,直到您不再满足这一要求(但这是有问题的/困难的),您可以通过在二进制文件上使用readelf -W -s找到问题所在,这将显示所有已使用的符号,名称中带有@的符号都是版本符号。

避免这种情况的正确方法是设置一个类似于预期目标的"sysroot“树,并使用编译器的--sysroot标志(由GCC和Clang支持)交叉编译您的应用程序。sysroot环境可以通过在仿真器或另一台计算机上安装一个系统,然后复制它,或者使用debootstrap (用于基于Debian的发行版)、rinserhbootstrap (用于基于红帽的发行版)等工具来创建,或者您可以创建一个通用的工具,手动构建基本系统或使用某些构建系统(例如buildrootopenembedded/poky)。通过这种方式,结果将保证与它编译的版本一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74089622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档