我正在运行使用Buildroot配置的最小Linux。一切正常,直到我在目标上运行我的跨版本应用程序之一,并产生以下错误:
/lib/libstdc++.so.6: no version information available
[strings /lib/libstdc++.so.6 | grep GLIBCXX
上TARGET 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版本。
如何解决此问题?
听起来很像您的构建环境设置错误。
如果要使用Buildroot构建目标,那么必须也要使用相同的工具链和环境来构建应用程序。两个选项:
请参阅Buildroot文档和此excellent presentation (PDF)。特别是第27和34页。
[特殊情况是,您要处理供应商的SDK和工具链。然后,您需要将供应商工具链集成到Buildroot中,这非常简单并有文档记录。无论如何,结果必须是您对两者使用相同的工具链和标头。