web-dev-qa-db-fra.com

Signification de l'option -pthread lors de la compilation

Dans divers projets C et C++ multithreads, j'ai vu l'indicateur -pthread Être appliqué à la compilation et à la création de liens alors que d'autres ne l'utilisaient pas du tout et passaient simplement -lpthread À la création de liens. .

Existe-t-il un danger de ne pas compiler et relier avec le drapeau -pthread - c’est-à-dire ce que fait réellement -pthread? Je m'intéresse principalement aux plateformes Linux.

135
leeeroy

Essayer:

gcc -dumpspecs | grep pthread

et cherchez tout ce qui commence par %{pthread:.

Sur mon ordinateur, les fichiers sont compilés avec -D_REENTRANT, et lié à -lpthread. Sur d'autres plateformes, cela pourrait différer. Utilisation -pthread pour plus de portabilité.

En utilisant _REENTRANT, on GNU libc, modifie le fonctionnement de certains en-têtes de libc. Comme exemple spécifique, il fait appeler errno une fonction renvoyant un emplacement local du thread.

102
Chris Jester-Young

De man gcc:

-pthread Ajoute la prise en charge du multithreading avec la bibliothèque pthreads. Cette option définit des indicateurs pour le préprocesseur et l'éditeur de liens.

37
Dmitry