Différence entre-pthread et -lpthread lors de la compilation
Quelle est la différence entre gcc -pthread
et gcc -lpthread
qui est utilisé lors de la compilation les programmes multithread?
- Double Possible de l'Importance de l'-pthread drapeau lors de la compilation
Vous devez vous connecter pour publier un commentaire.
-pthread
indique au compilateur de lien dans la bibliothèque pthread ainsi que la configuration de la compilation pour les threads.Par exemple, la figure suivante montre les macros qui se défini lors de la
-pthread
option est utilisée sur le pack GCC installé sur ma machine Ubuntu:À l'aide de la
-lpthread
option seules causes de la bibliothèque pthread être liée à la pré-définis macros n'obtenez pas défini.Bas de ligne: vous devez utiliser la
-pthread
option.Remarque: le
-pthread
option est documentée comme une plate-forme d'option spécifique dans le CCAG docs, il pourrait ne pas toujours être disponible. Toutefois, il est disponible sur les plates-formes que la GCC documents ne sont pas explicitement la liste pour i386 et x86-64) - vous devez l'utiliser lorsqu'il est disponible.Également noter que d'autres options similaires ont été utilisés par la CCG, comme
-pthreads
(répertorié comme un synonyme de-pthread
sur Solaris 2) et-mthread
(pour MinGW-thread spécifique de soutien sur les architectures i386 et x86-64 Windows). Ma compréhension est que GCC est en essayant de le déplacer à l'aide de-pthread
uniformément à l'avenir.-lpthread
est suffisante pour obtenir l'ensemble de threads POSIX, bibliothèque.-lpthread
t obtenir l'ensemble de threads POSIX, bibliothèque.-lpthread
devrait être suffisant pour obtenir toutes les pthreads de soutien. Pas d'autres options de compilation ne devrait être nécessaire.-l pthread
"(...) mettent à la disposition de toutes les interfaces référencé dans <pthread.h>, et pthread_kill() et pthread_sigmask() référencé dans <signal.h>. Une mise en œuvre peut rechercher cette bibliothèque en l'absence de cette option." Rien de mal avec GCC.-lpthread
mais pas-pthread
est insuffisante pour obtenir le support de pthread, comme je l'ai déjà précisé dans mon commentaire précédent.<pthread.h>
et al est, et la bibliothèque pthread est rechercher avec-pthread
. Ceci répond à la définition de "peut rechercher cette bibliothèque en l'absence de cette option (-lpthread
)". Aucune autre exigence est faite par POSIX, ni davantage "prise en charge de pthread" définie.-lpthread
. Cependant, la gcc documentation suggère que ce pourrait être insuffisante pour obtenir pthreads de soutien, qui est la remarque que j'ai faite à travers les commentaires précédents. Je n'ai pas du tout attention à ce qui se passe si vous ne fournissez pas-lpthread
ou certains aléatoire d'autres options exclusives. Seulement-lpthread
est spécifiée par POSIX pour garantir pthreads et qui ne semble pas être suffisant avec gcc.-lpthread
, nous obtenons le message:clang-7: warning: -lpthread: 'linker' input unused [-Wunused-command-line-argument]
. Il serait peut-être mieux avecwarning: -pthread: 'deprecated flag ignored [-Wunused-command-line-argument]
.-mthread
, faut-il utiliser win32threads ou c'est juste qu'il fait POSIX threads de travail pour MinGW-w64?-lpthread
alors?-pthread
Ajoute le support de multithreading avec la bibliothèque pthreads. Cette option définit les drapeaux pour le préprocesseur et l'éditeur de liens (man gcc
).tout
-lpthread
vient à l'existence, tout en les reliant il n'y aura pas d'influence tout en prétraitement.