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
Linda Hamiltonoriginal
2024-11-29 07:08:09241parcourir

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

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

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

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!

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