Я хочу использовать кросс-компиляцию в 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 '?