Skip to content

Linker error while crosscompiling to linux/mips #1148

Open

Description

@taushkanov

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.

Activity

  1. redboltz commented on Nov 19, 2024

    @redboltz
    Contributor

    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.

  2. taushkanov commented on Nov 19, 2024

    @taushkanov
    Author

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions