c++glibcbeagleboneblackbuildroot

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


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?


Solution

  • 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.