我想在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”的引用的问题?