减少所需的libc版本

时间:2013-06-30 11:57:52

标签: c++ linux gcc libc

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

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

有关如何修复它的任何想法?之前我使用过另一个Linux发行版(CentOS 6)并且工作正常(对我和其他用户而言)。

我该如何解决?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

  1. 静态链接libstdc ++。
  2. 使用二进制文件分发您的库版本,并在链接时使用RPATH。
  3. 您可以使用-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。