Maison > développement back-end > C++ > Pourquoi mon code C `std::thread` ne parvient-il pas à se lier sous Linux avec GCC et comment puis-je y remédier ?

Pourquoi mon code C `std::thread` ne parvient-il pas à se lier sous Linux avec GCC et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-11-29 07:08:09
original
172 Les gens l'ont consulté

Why Does My C   `std::thread` Code Fail to Link on Linux with GCC, and How Can I Fix It?

Résoudre les problèmes de liaison lors de l'utilisation de std::thread avec GCC sous Linux

Dans le domaine du multithreading avec C, la bibliothèque standard C fournit la classe std::thread. Lorsque vous tentez d'utiliser std::thread avec GCC sur un système Linux, l'erreur suivante peut survenir :

terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted 
Aborted
Copier après la connexion

Cause :

Cette erreur indique qu'une liaison appropriée les options n'ont pas été spécifiées pour que le compilateur résolve les dépendances liées à std::thread. Plus précisément, sous Linux, la bibliothèque pthread est impliquée dans l'implémentation de std::thread.

Solution :

Pour résoudre ce problème, l'option du compilateur -pthread doit être employé. Cette option demande au compilateur de lier le programme à la bibliothèque pthread. Voici comment compiler correctement le code avec l'option de liaison appropriée :

g++ -std=c++0x test.cpp -pthread
Copier après la connexion
Copier après la connexion

Placement de l'option de liaison :

Il est crucial de noter que l'option -pthread doit être répertoriée après le fichier source (.cpp) lors de la compilation. Cela garantit que le compilateur résout correctement les dépendances.

Commande révisée :

Après avoir ajouté l'option -pthread, la commande de compilation révisée apparaîtra comme :

g++ -std=c++0x test.cpp -pthread
Copier après la connexion
Copier après la connexion

En incorporant l'option -pthread, le code sera compilé et exécuté avec succès, permettant à std::thread de fonctionner comme prévu. multithreading dans votre environnement Linux.

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