【问题标题】:What's the best way to build software that doesn't require the newest glibc?构建不需要最新 glibc 的软件的最佳方法是什么?
【发布时间】:2011-02-15 14:44:20
【问题描述】:

我正在尝试构建一个可以在多个 Linux 发行版上运行的二进制包。它目前在 Ubuntu 10.04 上构建,但在 Ubuntu 8.04 上失败并出现以下错误:

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test)
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test)

解决此问题的首选方法是什么?有没有办法在新盒子上安装旧的 glibc 并针对它进行构建,还是我必须在旧发行版上构建?如果我针对旧的 glibc 构建,它会在新的 glibc 上工作吗?

或者,我可以安装一些方便的编译器标志或软件包来解决问题吗?

【问题讨论】:

    标签: linux backwards-compatibility glibc


    【解决方案1】:

    我发现的最佳解决方案是安装运行 Debian stable 的虚拟机,并在此基础上进行构建。 Debian stable 已经足够老了,任何用它构建的软件包都可以在任何其他基于 Debian 的发行版上运行,比如 Ubuntu。您可能必须解决已在各种软件的更高版本中修复但未向后移植到 Debian stable 的非关键错误。

    【讨论】:

    • 我认为这意味着在旧版本的 glibc 上构建仍然可以在新版本的 glibc 上正常工作?
    • 据我所知,是的……让我这么说吧,它还没有出错。 ;-)
    【解决方案2】:

    如果您真的想确保它在每个最近的发行版上运行,您还可以考虑静态链接到您选择的 libC。但是,如果您使用仅由较新内核提供的功能(例如较新的系统调用),您可能仍然会遇到问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2022-01-19
      • 2010-09-09
      相关资源
      最近更新 更多