在链接期间,Linux交叉编译失败,未定义对__emutls_v._ZSt11__once_call的引用

时间:2019-07-03 09:27:11

标签: c++ linux docker mingw cross-compiling

我想在docker上使用交叉编译来创建Windows二进制文件。
基于Buster Debian的Docker,带有g ++-mingw-w64软件包。
我的项目使用protobuf / grpc。 gRPC尚未交叉编译就绪-我的意思是grpc_cpp_plugin.exe显然是Windows二进制文件。但是借助binfmt_misc可以帮助构建流程进一步发展。
为了跳过关于缺少std :: mutex的错误,我使用x86_64-w64-mingw32-g++-posix作为C ++编译器。

现在-在链接期间,我看到了这则可怕的消息

  

/ 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._ZSt11on .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复制到docker中,并强制与此链接(在CMake项目配置期间添加LDLIBS =“-l / var / run / gcc_libs / libstdc ++。a”)。现在,它抱怨undefined reference to std :: __ once_functor'`。

如何解决未定义对“ __emutls_v._ZSt15__once_callable”的引用的问题?

0 个答案:

没有答案