Maison >développement back-end >C++ >Pourquoi g lance-t-il toujours « Activer le multithreading pour utiliser std::thread : opération non autorisée » même avec l'indicateur -pthread ?

Pourquoi g lance-t-il toujours « Activer le multithreading pour utiliser std::thread : opération non autorisée » même avec l'indicateur -pthread ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 12:46:18429parcourir

Why Does g   Still Throw

Compilation de code multithread avec g

Un individu a rencontré des difficultés pour compiler du code multithread à l'aide de g , malgré la spécification des indicateurs nécessaires. Le code, qui comprend des fichiers d'en-tête pour les E/S et la manipulation des threads, était simple, contenant un thread de travail et un thread principal. Cependant, la tentative de compilation a entraîné une erreur :

terminate called after throwing an instance of 'std::system_error'   
what():  Enable multithreading to use std::thread: Operation not permitted  
Aborted (core dumped)

L'individu avait déjà inclus l'indicateur -pthread dans sa commande de compilation, ce qui est généralement recommandé pour activer le multithreading dans g . Cependant, le problème persistait.

La réponse au problème provient d'un bug dans gcc. La solution de contournement suggérée dans le dernier commentaire de la discussion sur le bug concerné consiste à ajouter l'indicateur suivant à la commande de compilation :

-Wl,--no-as-needed

En implémentant cette solution de contournement, l'individu a pu compiler et exécuter avec succès son code multithread en utilisant 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