3

我最近在我的 Ubuntu 服务器上编译了一个二进制文件并分发了它。这是用户遇到的错误:

Failed (/lib32/libc.so.6: version `GLIBC_2.17' not found

关于如何解决它的任何想法?我之前使用过另一个 Linux 发行版(CentOS 6),它运行良好(对我和其他用户来说)。

我该如何解决?

4

2 回答 2

2

最简单的解决方案是构建在您想要支持的最古老的系统上。

于 2013-06-30T16:54:12.983 回答
1

如果您想使用较新的库,您有两个选择

  1. 静态链接 libstdc++。
  2. 使用二进制文件分发您的库版本并在链接时使用 RPATH。

您可以使用 g++ 静态链接-static-libgcc -static-libstdc++ -staticthis 应该几乎静态链接所有内容,但会扩大您的二进制文件。

另一个选项是使用 RPATH-rpath链接器选项可以像这样传递:

-Wl,-rpath,$PATH将 $PATH 替换为 libs 之类的东西,或者只是 . 对于与二进制文件相同的目录,生成的 ELF(可执行文件)的标头将知道在哪里查找所需的共享库,您可以使用二进制文件重新分发共享库。

否则你可以编译并链接到你的目标机器上支持的版本。

于 2013-06-30T12:30:05.883 回答