Maison  >  Article  >  développement back-end  >  Pourquoi mon code C multithread ne parvient-il pas à se compiler avec g ?

Pourquoi mon code C multithread ne parvient-il pas à se compiler avec g ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 06:01:30426parcourir

Why Does My Multithreaded C   Code Fail to Compile with 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn