【问题标题】:/lib/libstdc++.so.6: no version information available/lib/libstdc++.so.6:没有可用的版本信息
【发布时间】:2019-10-22 02:25:06
【问题描述】:

我正在运行使用 Buildroot 配置的最小 linux。一切正常,直到我在目标上运行我的一个交叉构建应用程序并产生以下错误:

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

strings /lib/libstdc++.so.6 | grep GLIBCXXTARGET Machine 上的输出是:

GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH

上述命令在BUILD Machine 上的输出是:

GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBCXX_3.4.23 GLIBCXX_3.4.24 GLIBCXX_3.4.25 GLIBCXX_DEBUG_MESSAGE_LENGTH

似乎当 glibcxx 版本不匹配时会出现此错误。 然后我尝试检查 buildroot 中的BR2_INSTALL_LIBSTDCPP 选项,但我们无法更改/更新 glibcxx 版本。

如何解决这个问题?

【问题讨论】:

  • 也许尝试在目标机器上重新安装 libstdc++.so.6?
  • 听起来您链接到主机的库。您是否查看了 gcc 的 --sysroot 选项? (gcc.gnu.org/onlinedocs/gcc/Directory-Options.html)。你可以使用buildroot/output/host/xyz/sysroot

标签: c++ glibc beagleboneblack buildroot


【解决方案1】:

听起来很像您的构建环境设置错误。

如果您使用 Buildroot 构建您的目标,那么您必须也使用相同的工具链和环境构建您的应用程序。两种选择:

  • 从 (Buildroot) 树构建您的应用程序
  • 将您的应用程序构建为 Buildroot 中的一个包

请参阅 Buildroot 文档和 excellent presentation (PDF)。特别是第 27 和 34 页。

如果您正在处理供应商 SDK 和工具链,则可能是一种特殊情况。然后,您需要将供应商工具链集成到 Buildroot 中,这非常简单且有文档记录。无论如何,结果一定是您对两者使用相同的工具链和标头。

【讨论】:

  • 感谢提示。我使用与目标二进制应用程序的工具链匹配的工具链编译了 buildroot 源代码。
  • 在我的例子中,我使用 linaro 工具链来编译 buildroot 和我的目标应用程序。
猜你喜欢
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2022-10-08
  • 2017-11-30
  • 2019-05-04
相关资源
最近更新 更多