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