Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ubuntulibc_Ubuntu_Gcc_Glibc_Libc - Fatal编程技术网

ubuntulibc

ubuntulibc,ubuntu,gcc,glibc,libc,Ubuntu,Gcc,Glibc,Libc,我为Ubuntu开发了一个应用程序。我用当前的开发工具在Ubuntu 0.04 64位上编译它。我用CPack创建了一个包并发送给一个朋友。 他得到: 他在Ubuntu 16上。我已经在我的开发机器上安装了glibc 2.31。所以我假设这个lib在他的ubuntu16上丢失了? 我可以把它添加到包中吗?这样Ubuntu 16用户就可以使用所需的libs了吗?或者我必须用兼容标志之类的东西来编译它 我为Ubuntu开发了一个应用程序。我在Ubuntu 20.04 64位上用当前的开发工具编译它。

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

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

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

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

这样做的选择是

  • 在虚拟机中构建
  • 在docker容器中构建
  • 内置
    chroot
  • 构建一个Linux到旧Linux的交叉编译器
我已经在我的开发机器上安装了glibc 2.31。所以我假设这个lib在他的ubuntu16上丢失了

是的:Ubuntu16.04附带了GLIBC-2.23,如果不升级整个发行版,就不可能安装更新的版本(当然,这是非常重要的)

我可以把它添加到包中吗?这样Ubuntu 16用户就可以使用所需的libs了吗

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

另外,在StackOverflow上有很多“如何与老GLIBC链接”的答案,但我找不到一个正确的答案

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