我正在构建一个可重新分配的.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?

最佳答案



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

使用较旧的g++版本或构建

  • libstdc++.a静态链接到您的共享库中,并隐藏其符号(这也可能涉及许可问题,请咨询您的律师)。
  • 将您的libstdc++.so.6版本与您的库一起打包,并要求具有较旧版本的用户安排使用您的较新版本(这也涉及许可问题,但我相信这些更容易满足)。
  • 关于linux - 如何摆脱 'GLIBCXX_3.4.9 not found error'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10176997/

    10-16 06:15