I am running a minimal linux configured using Buildroot. All works fine until I run one of my cross-build application on target that produce below error:
/lib/libstdc++.so.6: no version information available
The output of strings /lib/libstdc++.so.6 | grep GLIBCXX
on TARGET Machine
is:
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
The output of same above command on BUILD Machine
is:
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
Seems like this error comes when there is glibcxx version mismatch.
Then I tried to check BR2_INSTALL_LIBSTDCPP
option in buildroot, but we cant change/update glibcxx version.
How to resolve this issue?
Sounds very much like your build environment is set up wrong.
If you are building your target using Buildroot, then you must build your application using the same toolchain and environment too. Two options:
Please refer to the Buildroot documentation and this excellent presentation (PDF). Specifically pages 27 and 34.
A special case would be if you are dealing with a vendor SDK and toolchain. Then you would need to integrate the vendor toolchain into Buildroot, which is very simple and documented. Anyway, the result must be that you use the same toolchain and headers for both.