Maison >développement back-end >C++ >Voici quelques titres basés sur des questions qui correspondent au contenu de votre article : * Pourquoi l'utilisation de -static avec -pthread pour la compilation C provoque-t-elle des défauts de segmentation ? * Comment résoudre les défauts de segmentation w

Voici quelques titres basés sur des questions qui correspondent au contenu de votre article : * Pourquoi l'utilisation de -static avec -pthread pour la compilation C provoque-t-elle des défauts de segmentation ? * Comment résoudre les défauts de segmentation w

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 21:25:021058parcourir

Here are a few question-based titles that fit the content of your article:

* Why does using -static with -pthread for C   compilation cause Segmentation Faults?
* How to resolve Segmentation Faults when statically linking pthread in C  ?
* Static vs. Dyn

Lors de la compilation de code C avec g et l'indicateur -pthread pour activer le multithread, l'utilisation de -static pour établir une liaison statique avec la bibliothèque pthread peut conduire à une erreur de segmentation. Cela se produit parce que la bibliothèque pthread liée statiquement ne dispose pas des symboles faibles nécessaires, y compris pthread_mutex_lock(), qui sont définis dans la bibliothèque glibc.

Pour résoudre ce problème, assurez-vous que l'exécutable est lié dynamiquement à pthread en passant le -lpthread indicateur vers l'éditeur de liens. Cela forcera l'éditeur de liens à inclure les symboles faibles requis de la version de la bibliothèque partagée de pthread.

Alternativement, si une liaison statique est requise, utilisez la commande suivante pour compiler le programme :

g++ -o one one.cpp -Wall -std=c++11 -O3 -static -lrt -pthread \
    -Wl,--whole-archive -lpthread -Wl,--no-whole-archive

L'option -Wl,--whole-archive force l'éditeur de liens à inclure tous les fichiers objets de la bibliothèque pthread, garantissant que les symboles faibles requis sont inclus. L'option -Wl,--no-whole-archive désactive ce comportement pour les fichiers d'archive suivants.

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