Signification du drapeau -pthread lors de la compilation

Dans divers projets C et C ++ -pthread j’ai vu le drapeau -pthread appliqué à la fois à la compilation et à la phase de liaison, alors que d’autres ne l’utilisaient pas du tout et passaient simplement -lpthread à la phase de liaison.

Y a-t-il un danger à ne pas comstackr et à lier avec l’indicateur -pthread – c.-à-d. -pthread fait réellement -pthread ? Je m’intéresse principalement aux plateformes Linux.

Essayer:

 gcc -dumpspecs | grep pthread 

et recherchez tout ce qui commence par %{pthread:

Sur mon ordinateur, les fichiers sont compilés avec -D_REENTRANT et liés à -lpthread . Sur d’autres plates-formes, cela pourrait être différent. Utilisez -pthread pour la plupart des portabilités.

L’utilisation de _REENTRANT , sur GNU libc, modifie le fonctionnement de certains en-têtes de libc. À titre d’exemple spécifique, errno appelle une fonction renvoyant un emplacement local de thread.

De l’ man gcc :

-pthread Ajoute un support pour le multithreading avec la bibliothèque pthreads. Cette option définit des indicateurs à la fois pour le préprocesseur et l’éditeur de liens.