当使用MXE gcc构buildQt应用程序时,std :: mutex缺失

我正在试图从linux下针对windows的命令行中获得一个Qt应用程序。 我用mxe来构build一个工具链来定位窗口,但是我的构build失败了各种线程相关的位。 mxe用winpthread构build,我知道Qt项目将使用预先打包的mingw编译器从创build者内部的窗口本身构build。 我正在使用我的AR​​M Linux交叉编译器成功构build,所以我只想让Windows完成相同的工作。 我试图在构build服务器上或者从Jenkins获得我所有目标的一行。

我猜我错过了一些我需要传递给mxe的时候进行交叉工具链构build,或者丢失了一些我需要传递给qmake的构build才能成功。

问题是使用win32线程的GCC的默认MXE构建,而不是mingws pthreads实现。

编辑src / gcc.mk并确保将winpthreads添加到$(PKG)_DEPS列表中,然后更改配置行,以便–enable-threads = win32变为–enable-threads = posix。

然后重新制作winpthreads和gcc。 请注意,这里有一个循环依赖关系,您需要首先使用win32线程(缺省)构建gcc,然后使用winpthreads重新创建。

感谢Andreia Gaita为此 – http://blog.worldofcoding.com/2014/05/cross-compiling-c11-without-going-madder.html

在MXE中添加了POSIX配置( 使用gcc内联构建pthreads,并在libgcc中启用可选的posix线程 )。

例如,用这个(x64,shared,posix线程)构建qt:

make MXE_TARGETS='x86_64-w64-mingw32.shared.posix' qt