2015-08-05 2 views
2

Je tente d'obtenir une application Qt à construire à partir de la ligne de commande sous linux ciblée pour Windows. J'ai utilisé mxe pour créer une chaîne d'outils pour cibler les fenêtres, mais ma construction échoue à cause de divers bits liés au thread. mxe construit avec winpthreads et je sais que le projet Qt va construire sur Windows lui-même à l'intérieur du créateur, en utilisant le compilateur pré-emballé mingw. Je construis avec succès en utilisant mon compilateur croisé ARM Linux, donc je veux juste que les fenêtres soient faites de la même manière. J'essaye d'obtenir une construction d'une ligne sur un serveur de construction ou de Jenkins pour toutes mes cibles.std :: mutex manquant lors de la construction de l'application Qt avec MXE gcc

Je suppose qu'il me manque quelque chose que je dois transmettre à mxe lorsque je fais la construction de la chaîne d'outils croisée ou que je manque quelque chose que je dois passer à qmake pour que cette construction réussisse.

Répondre

2

Le problème est lié à la version MXE par défaut de GCC utilisant les threads win32, contrairement à l'implémentation de mingws pthreads.

Modifiez src/gcc.mk et assurez-vous que winpthreads est ajouté à la liste $ (PKG) _DEPS, puis modifiez la ligne de configuration afin que --enable-threads = win32 devienne --enable-threads = posix.

Ensuite, recréer winpthreads et gcc. Notez qu'il existe une dépendance circulaire ici, vous devez construire gcc avec les threads win32 (par défaut) d'abord refaire avec winpthreads.

Merci à Andreia Gaita pour ce - http://blog.worldofcoding.com/2014/05/cross-compiling-c11-without-going-madder.html