我为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。所以我假设这个库在他的Ubuntu16上丢失了?我可以将它添加到包中,这样Ubuntu 16用户就可以使用所需的库了吗?或者我必须使用诸如兼容性标志之类的东西来编译它?
发布于 2020-10-26 05:33:46
我为Ubuntu开发了一个应用程序。我在64位的Ubuntu 20.04上用当前的开发工具编译了它。我用CPack创建了一个包,并发送给了一个朋友。
这是行不通的。通常,您需要在计划支持的最低版本的操作系统上开发二进制文件。
这样做的选项是
chroot
中docker container
我已经在我的开发机器上安装了glibc2.31。所以我假设这个库在他的Ubuntu16上丢失了?
是的,Ubuntu16.04附带了GLIBC-2.23,如果不升级整个发行版,安装更新版本是不可能的(当然,是it's possible,但完全不是小事)。
我可以将它添加到包中,这样Ubuntu16用户就可以使用所需的库了吗?
不是的。您想要添加的包将影响目标系统上的每个(动态链接的)程序,并(极有可能)破坏该系统(这就是为什么发行版从一开始就不升级GLIBC的原因)。
附注:在StackOverflow上有很多“如何与旧的GLIBC链接”的答案,但我找不到一个正确的答案。
https://stackoverflow.com/questions/64351749
复制相似问题