Maison > développement back-end > C++ > 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
Libérer: 2024-11-01 06:01:30
original
779 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal