首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu libc混淆

Ubuntu libc混淆
EN

Stack Overflow用户
提问于 2020-10-14 18:54:13
回答 1查看 462关注 0票数 0

我为Ubuntu开发了一个应用程序。我用当前的开发工具在Ubuntu 0.04 64位上编译的。我用CPack创建了一个包,并发送给了一个朋友。他得到了:

代码语言:javascript
复制
libm.so.6: version "GLIBC_2.29" not found
libc.so.6: version "GLIBC_2.27" not found
libm.so.6: version "GLIBC_2.29" not found
libc.do.6: version "GLIBC_2.28" not found

他使用的是Ubuntu 16,我已经在我的开发机器上安装了glibc 2.31。所以我假设这个库在他的Ubuntu16上丢失了?我可以将它添加到包中,这样Ubuntu 16用户就可以使用所需的库了吗?或者我必须使用诸如兼容性标志之类的东西来编译它?

EN

回答 1

Stack Overflow用户

发布于 2020-10-26 05:33:46

我为Ubuntu开发了一个应用程序。我在64位的Ubuntu 20.04上用当前的开发工具编译了它。我用CPack创建了一个包,并发送给了一个朋友。

这是行不通的。通常,您需要在计划支持的最低版本的操作系统上开发二进制文件。

这样做的选项是

chroot

  • build从Linux到旧版Linux crosscompiler.

中docker container

  • build中的VM

  • 内部版本中的
  • 内部版本

我已经在我的开发机器上安装了glibc2.31。所以我假设这个库在他的Ubuntu16上丢失了?

是的,Ubuntu16.04附带了GLIBC-2.23,如果不升级整个发行版,安装更新版本是不可能的(当然,是it's possible,但完全不是小事)。

我可以将它添加到包中,这样Ubuntu16用户就可以使用所需的库了吗?

不是的。您想要添加的包将影响目标系统上的每个(动态链接的)程序,并(极有可能)破坏该系统(这就是为什么发行版从一开始就不升级GLIBC的原因)。

附注:在StackOverflow上有很多“如何与旧的GLIBC链接”的答案,但我找不到一个正确的答案。

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

https://stackoverflow.com/questions/64351749

复制
相关文章

相似问题

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