msgpack-c icon indicating copy to clipboard operation
msgpack-c copied to clipboard

Linker error while crosscompiling to linux/mips

Open taushkanov opened this issue 1 year ago • 2 comments

Hello! After several compilations of messagepack to linux/arm, linux/x64 and some others I turned to linux/mips platform with toolchain-mipsel_24kc_gcc-12.3.0_musl. In my case Messagepack is included in shared library that's being used by application.

So while compiling application I'm getting error:

mipsel-openwrt-linux-musl/bin/ld: libnodesd.so: undefined reference to msgpack::v1::adaptor::object<decltype(nullptr), void>::operator()(msgpack::v2::object&, decltype(nullptr) const&) const

Digging with nm shows that mentioned symbol is really undefined in library:

nm -D --demangle ./libnodesd.so | grep "msgpack::v1::adaptor::object<decltype(nullptr), void>::operator()" U msgpack::v1::adaptor::object<decltype(nullptr), void>::operator()(msgpack::v2::object&, decltype(nullptr) const&) const

Everything is fine when compiling with regular x64 gcc, linaro arm crosscompiler and others.

I would be very appreciated for any clues to resolve error.

taushkanov avatar Nov 19 '24 08:11 taushkanov

I am no sure but some of implementation defined type would cause the issue, I guess.

You can write your own adaptor using the following way: https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_adaptor#non-intrusive-approach

Perhaps writing your own adaptor for decltype(nullptr) std::nullptr_t? solve the issue.

NOTE: msgpack-c (C++) is a header-only library. The all translation unit should have the same version of msgpack-c, basically. But if msgpack-c code is in the user's library, you can only use the type that is instantiated in the library, I guess.

redboltz avatar Nov 19 '24 08:11 redboltz

Thank you for quick answer.

Sorry for may be newbie quiestions, but I don't understand the reason of that error while same app/user library successfully compiles with other compilers.

I'm using MessagePack 3.1.0, 3.3.0 and today tried 6.1.0 with identical behavior.

taushkanov avatar Nov 19 '24 09:11 taushkanov