Ubuntu libc confuse


我为Ubuntu开发了一个应用程序。我在Ubuntu 0.04 64位上用当前的开发工具编译了它。我用CPack创建了一个包并发送给了一个朋友。他得到了:
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。所以我认为这个lib在他的Ubuntu 16上不见了?我可以把它添加到软件包中吗?这样Ubuntu16用户就可以获得所需的库了?或者我必须用类似兼容性标志的东西来编译它?

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

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

这样做的选项是

  • 在VM中构建
  • 在docker容器中构建
  • 内置chroot
  • 构建一个Linux到旧版Linux的交叉编译器

我已经在我的开发机器上安装了glibc 2.31。所以我认为这个lib在他的Ubuntu 16上不见了?

是的:Ubuntu 16.04随GLIBC-2.23一起提供,在不升级整个发行版的情况下安装新版本是不可能的(嗯,这是可能的,但完全不重要(。

我可以把它添加到软件包中吗?这样Ubuntu 16用户就可以获得所需的库了吗?

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

附言:;如何与旧的GLIBC链接";StackOverflow上的答案,但我找不到一个正确的答案。

相关内容

  • 没有找到相关文章

最新更新