/lib/libstdc++.so.6: no version information available。

3
我正在运行使用Buildroot配置的极简Linux。一切正常,直到我在目标设备上运行我的交叉编译应用程序时出现以下错误:/lib/libstdc++.so.6: no version information available
TARGET Machine上执行strings /lib/libstdc++.so.6 | grep GLIBCXX命令的输出为:GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH
而在BUILD Machine上执行相同的命令输出为:GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 ... GLIBCXX_DEBUG_MESSAGE_LENGTH
看起来当glibcxx版本不匹配时会出现此错误。然后我尝试检查buildroot中的BR2_INSTALL_LIBSTDCPP选项,但我们无法更改/更新glibcxx版本。
如何解决这个问题?

也许尝试在目标机器上重新安装libstdc++.so.6? - Bruce Shen
听起来你链接到了主机的库。你有没有研究过gcc的--sysroot选项?(https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html)。你可以使用`buildroot/output/host/xyz/sysroot`来实现。 - Toto
1个回答

4
听起来很像您的构建环境设置错误。
如果您正在使用Buildroot构建目标,则必须使用相同的工具链和环境构建应用程序。有两个选项:
- 在(Buildroot)树之外构建您的应用程序 - 将您的应用程序作为Buildroot中的软件包构建
请参阅Buildroot文档和此优秀演示文稿(PDF)。特别是第27页和第34页。
一个特殊情况是,如果您正在处理供应商SDK和工具链,则需要将供应商工具链集成到Buildroot中,这非常简单并已记录在文档中。无论如何,结果必须是您同时使用相同的工具链和头文件。

非常感谢您的提示。我使用与目标二进制应用程序的工具链匹配的工具链编译了Buildroot源代码。 - Avadhana Technologies
在我的情况下,我使用了Linaro工具链来编译Buildroot和我的目标应用程序。 - Avadhana Technologies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接