我最近在我的 Ubuntu 服务器上编译了一个二进制文件并分发了它。这是用户遇到的错误:
Failed (/lib32/libc.so.6: version `GLIBC_2.17' not found
关于如何解决它的任何想法?我之前使用过另一个 Linux 发行版(CentOS 6),它运行良好(对我和其他用户来说)。
我该如何解决?
最简单的解决方案是构建在您想要支持的最古老的系统上。
如果您想使用较新的库,您有两个选择
您可以使用 g++ 静态链接-static-libgcc -static-libstdc++ -static
this 应该几乎静态链接所有内容,但会扩大您的二进制文件。
另一个选项是使用 RPATH-rpath
链接器选项可以像这样传递:
-Wl,-rpath,$PATH
将 $PATH 替换为 libs 之类的东西,或者只是 . 对于与二进制文件相同的目录,生成的 ELF(可执行文件)的标头将知道在哪里查找所需的共享库,您可以使用二进制文件重新分发共享库。
否则你可以编译并链接到你的目标机器上支持的版本。