如何摆脱'GLIBCXX_3.4.9未找到错误'?

时间:2012-04-16 15:23:36

标签: linux gcc dependencies glibc glib

我正在构建一个可重写的.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,以便我的用户不会收到此错误?

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

2 个答案:

答案 0 :(得分:3)

  

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

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

  1. 使用较旧的g++版本或
  2. 构建
  3. libstdc++.a静态链接到您的共享库中,然后隐藏其符号(这也可能会产生许可影响,请咨询您的律师)。
  4. 将您的libstdc++.so.6版本与您的图书馆一起打包,并要求使用旧版本的用户安排选择更新版本(也有许可含义,但我相信这些更容易满足)。

答案 1 :(得分:0)

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