В Linux происходит кросс-компиляция с неопределенной ссылкой на __emutls_v._ZSt11__once_call во время компоновки - PullRequest
0 голосов
/ 03 июля 2019

Я хочу использовать кросс-компиляцию в Docker для создания бинарного файла Windows.
Докер на базе Buster Debian с пакетом g ++ - mingw-w64.
Мой проект использует protobuf / grpc. gRPC не готов к кросс-компиляции - я имею в виду, что grpc_cpp_plugin.exe, очевидно, является двоичным файлом Windows. Но с помощью binfmt_misc процесс сборки продвигается дальше.
Чтобы пропустить ошибку об отсутствии std :: mutex, я использовал x86_64-w64-mingw32-g++-posix в качестве компилятора C ++.

Теперь - во время ссылки я вижу это ужасное сообщение

/ USR / бен / x86_64-w64-mingw32-ЛД: /root/.conan/data/protobuf/3.6.1/bincrafters/stable/package/bb20affd9c58e6b3954ccc151546a38faf759db9/lib/libprotobufd.a(common.cc.obj):common.cc :(. RDATA $ .refptr .__ emutls_v._ZSt11__once_call [ .refptr .__ emutls_v._ZSt11__once_call] + 0x0): неопределенная ссылка на __emutls_v._ZSt11__once_call' /usr/bin/x86_64-w64-mingw32-ld: /root/.conan/data/protobuf/3.6.1/bincrafters/stable/package/bb20affd9c58e6b3954ccc151546a38faf759db9/lib/libprotobufd.a(common.cc.obj):common.cc:(.rdata$.refptr.__emutls_v._ZSt15__once_callable[.refptr.__emutls_v._ZSt15__once_callable]+0x0): undefined reference to __ emutls_v._ZSt15__once_callable '

Я скопировал c:\Qt\Tools\mingw730_64\lib\gcc\x86_64-w64-mingw32\7.3.0\libstdc++.a в докер и принудительно установил связь с этим (добавьте LDLIBS = "- l / var / run / gcc_libs / libstdc ++. A" во время настройки проекта CMake). Теперь он жалуется на undefined reference to std :: __ Once_functor'`.

Как решить проблему с неопределенной ссылкой на `__emutls_v._ZSt15__once_callable '?

...