Maison > Article > développement back-end > Pourquoi mon code C multithread ne parvient-il pas à se compiler avec g ?
Compilation de code multithread avec g
Malgré les indicateurs nécessaires (-pthread -std=c 11), votre code ne parvient pas à se compiler avec g , ce qui entraîne l'erreur : "Activer le multithreading pour utiliser std::thread : opération non autorisée."
Résolution du problème
Le problème sous-jacent provient d'un bug dans gcc. Pour contourner ce problème, vous pouvez appliquer la solution de contournement suivante :
<code class="bash">g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed</code>
Comprendre la solution de contournement
L'indicateur -Wl,--no-as-needed indique au éditeur de liens pour omettre le chargement dynamique de la bibliothèque de threads. Par défaut, l'éditeur de liens inclut la bibliothèque de threads dans le cadre du programme compilé, mais ce processus peut échouer dans certaines conditions.
Compilateur alternatif : clang
Comme alternative pour modifier la ligne de commande g, vous pouvez également utiliser un autre compilateur C tel que clang . La commande suivante compilera votre code avec succès :
<code class="bash">clang++ main.cpp -o main.out -std=c++11</code>
Conclusion
En utilisant la solution de contournement -Wl,--no-as-needed ou en optant pour une alternative compilateur comme clang , vous pouvez surmonter le problème de compilation multithread rencontré avec g .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!