【问题标题】:How to get rid of 'GLIBCXX_3.4.9 not found error'?如何摆脱“GLIBCXX_3.4.9 未找到错误”?
【发布时间】:2012-04-16 15:23:36
【问题描述】:

我正在构建一个可再发行的 .so 文件。

但是,当我的用户尝试使用它时,他们会遇到可怕的 /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.9' not found 错误。

执行 objdump,似乎是我的二进制文件中的这个特殊符号导致了问题: _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9

我如何告诉我的 gcc/g++ 编译/链接到旧版本的 GLIBXX,以便我的用户不会收到此错误?

或者是解决这个难题的唯一方法是安装具有 GLIBXX 的单独旧版本的 linux?

【问题讨论】:

标签: linux gcc dependencies glibc glib


【解决方案1】:

我如何告诉我的 gcc/g++ 编译/链接到旧版本的 GLIBXX,这样我的用户就不会收到这个错误?

没有方法可以做到这一点。您唯一的选择是:

  1. 使用较旧的g++ 版本构建,或者
  2. libstdc++.a 静态链接到您的共享库中,并隐藏其符号(这也可能涉及许可问题,请咨询您的律师)。
  3. 将您的libstdc++.so.6 版本与您的库打包在一起,并要求拥有旧版本的用户安排使用您的新版本(也有许可问题,但我相信这些更容易满足)。李>

【讨论】:

    【解决方案2】:

    您正在 GLIBCXX_3.4.9 构建,因此您的用户需要至少有 GLIBCXX_3.4.9。

    【讨论】:

    • 我知道。事情是我的大多数用户都没有。所以我需要知道如何告诉 gcc 针对较低版本进行构建。这是否只需要传递额外的参数或安装整个 bew,旧版本的 linux?
    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 2010-12-29
    • 1970-01-01
    • 2019-05-03
    • 2011-05-29
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多