Référence non définie à pthread_create

Référence non définie à pthread_create
«Lorsque vous travaillez avec des threads POSIX dans les programmes C, vous pouvez trouver la« référence non définie à Pthread_create ». Il est principalement associé aux compilateurs GCC et G ++ dans Linux.

Dans ce tutoriel, nous discuterons de certaines des principales causes de cette erreur et comment la résoudre."

Commençons.

Cause

Il y a plusieurs raisons pour lesquelles l'erreur «référence non définie à Pthread_create» se produit.

Un exemple de code est comme indiqué ci-dessous:

#inclure
void * thread (void * vargp);
int main()

pthread_t tid;
printf ("Hello World Fron le fil principal!\ n ");
pthread_create (& tid, null, thread, null);
pthread_join (Tid, null);
pthread_exit ((void *) null);

void * thread (void * vargp)

printf ("Je suis du fil principal!\ n ");
pthread_exit ((void *) null);

Le code ci-dessus contient un programme Pthread simple qui imprime simplement un simple message texte. Cependant, si nous essayons de compiler le code ci-dessus, il renvoie une erreur.

Cause 1: fichier d'en-tête de filetage manquant

En C, la possibilité de créer plusieurs threads dans un programme est fournie par le Pthread.H. Par conséquent, avant de pouvoir utiliser le pthread_create et toutes ses fonctions fournies, nous devons inclure ce fichier d'en-tête dans notre programme.

Par conséquent, dans certains cas, ne pas inclure le pthread.Le fichier d'en-tête H entraînera la référence non définie.

Nous pouvons résoudre ce problème en incluant le fichier comme indiqué:

#inclure

Une fois inclus, nous pouvons procéder à compiler et tester notre programme.

Cause 2: Indicateur de compilateur incorrect

Une autre cause commune de la «référence non définie à Pthread_create» consiste à compiler votre programme avec les indicateurs de compilateur incorrects.

Par exemple, si vous compilez votre programme C avec la commande:

$ gcc -o threads posix_threads.c

Vous obtiendrez l'erreur «référence non définie aux pthreads».

Tout en s'assurant que les pthreads.Le fichier H est inclus dans votre fichier d'en-tête; Vous devez compiler votre code avec le bon indicateur de compilateur.

La commande correcte pour le compilateur GCC est illustrée ci-dessous:

gcc -pthread -o threads posix_threads.c

N'hésitez pas à remplacer les noms de fichiers de sortie et d'entrée.

L'ajout de l'option -pthread aux commandes du compilateur permet au compilateur d'exécuter le code avec le pthread.bibliothèque H.

Cause 3: Flag de Cmake manquant

Si vous utilisez un fichier de fabrication pour compiler votre programme, vous devrez inclure les options PTHREAD dans le fichier.

Vous pouvez le faire en ajoutant la ligne suivante à votre fichier de marque.

add_compile_options (-pthread)

Ou

Set (cmake_cxx_flags "$ cmake_cxx_flags -pthread")

Fermeture

Dans ce court tutoriel, nous avons couvert la «référence non définie à l'erreur PTHEAD_CREATE» lorsque vous travailliez avec des threads POSIX. Bien que nous ayons couvert les causes universelles de cette erreur, vous devrez peut-être vérifier votre environnement de développement et vous assurer que les bibliothèques requises sont correctement liées.

Nous espérons que vous avez apprécié le tutoriel, merci d'avoir lu.