我最近在我的Ubuntu Server上编译了一个二进制文件并将其分发。这是用户遇到的错误:
Failed (/lib32/libc.so.6: version `GLIBC_2.17' not found
有关如何修复它的任何想法?之前我使用过另一个Linux发行版(CentOS 6)并且工作正常(对我和其他用户而言)。
我该如何解决?
答案 0 :(得分:2)
最简单的解决方案是建立在您想要支持的最旧系统上。
答案 1 :(得分:1)
如果您想使用较新的库,您有两个选择
您可以使用-static-libgcc -static-libstdc++ -static
静态链接g ++,这应该静态地链接所有内容,但会扩大您的二进制文件。
另一种选择是使用RPATH -rpath
链接器选项可以像这样传递:
-Wl,-rpath,$PATH
用libs或者只是替换$ PATH。对于与二进制相同的目录,这样生成的ELF(可执行文件)的头将知道在哪里查找所需的共享库,您可以使用二进制文件重新分发共享库。
否则您只需编译并链接目标计算机上支持的版本。
答案 2 :(得分:-1)
构建可执行文件时,需要静态链接glibc。 见Link glibc statically but some other library dynamically with GCC
或者使其成为用户安装GLIBC_2.17。