我正在尝试从linux下的命令行构建一个针对windows的Qt应用程序。我使用mxe构建了一个针对窗口的工具链,但我的构建失败了,抱怨各种与线程相关的部分。mxe是用winpthread构建的,我知道Qt项目将使用预打包的mingw编译器从creator内部构建在windows本身上。我正在用我的ARM Linux交叉编译器成功地构建,所以我只想让windows也这样做。我正在尝试在构建服务器上或从Jenkins为我的所有目标获取一行构建。
我猜我遗漏了在进行跨工具链构建时需要传递给mxe的东西,或者是为了成功构建而遗漏了需要传递给qmake的东西。
发布于 2015-08-05 20:56:43
该问题存在于默认的使用win32线程的GCC的MXE构建中,而不是使用mingws pthread实现。
编辑src/gcc.mk并确保将winpthread添加到$(PKG)_DEPS列表中,然后更改配置行,使--enable-thread=win32变为--enable-thread=posix。
然后重新制作winpthreads和gcc。请注意,这里有一个循环依赖,您需要首先使用win32线程(默认)构建gcc,然后使用winpthread重新生成。
感谢Andreia Gaita为此- http://blog.worldofcoding.com/2014/05/cross-compiling-c11-without-going-madder.html
发布于 2016-09-10 03:56:31
已将POSIX配置添加到MXE (Building pthreads inline with gcc and enable optional posix threads in libgcc)。
例如,要使用它构建qt (x64、共享、POSIX线程):
make MXE_TARGETS='x86_64-w64-mingw32.shared.posix' qthttps://stackoverflow.com/questions/31831762
复制相似问题