Udefinert referanse til pthread_create

Udefinert referanse til pthread_create
"Når du jobber med POSIX -tråder i C -programmer, kan du finne den" udefinerte referansen til Pthread_Create ". Det er hovedsakelig assosiert med GCC og G ++ kompilatorer i Linux.

I denne opplæringen vil vi diskutere noen av hovedårsakene til denne feilen og hvordan vi skal løse den.”

La oss komme i gang.

Årsaken

Det er flere grunner til at den "udefinerte referansen til pthread_create" feil oppstår.

Én eksempelkode er som vist nedenfor:

#inkludere
tomrom *tråd (void *Vargp);
int main ()

pthread_t tid;
Printf ("Hallo World Fron hovedtråden!\ n ");
pthread_create (& tid, null, tråd, null);
pthread_join (tid, null);
pThread_exit ((void *) null);

void *tråd (void *Vargp)

printf ("Jeg er fra hovedtråden!\ n ");
pThread_exit ((void *) null);

Ovennevnte kode har et enkelt Pthread -program som ganske enkelt skriver ut en enkel tekstmelding. Imidlertid, hvis vi prøver å samle koden over, returnerer den en feil.

Årsak 1: Manglende trådoverskriftsfil

I C er muligheten til å lage flere tråder i et program levert av Pthread.h. Derfor, før vi kan bruke pthread_create og alle dens medfølgende funksjoner, må vi inkludere denne toppfilen i programmet vårt.

Derfor, i noen tilfeller, unnlater å inkludere pthread.H -overskriftsfilen vil resultere i den udefierte referansen.

Vi kan fikse dette ved å inkludere filen som vist:

#inkludere

Når vi er inkludert, kan vi fortsette å kompilere og teste programmet vårt.

Årsak 2: Feil kompilatorflagg

En annen vanlig årsak til den "udefinerte referansen til Pthread_Create" er å samle programmet ditt med feil kompilatorflaggene.

For eksempel, hvis du sammenstiller C -programmet ditt med kommandoen:

$ gcc -o tråder posix_threads.c

Du vil få feilen "udefinert referanse til pthreads".

Mens du sørger for at pthreads.H -fil er inkludert i overskriftenfilen din; Du må kompilere koden din med riktig kompilatorflagg.

Riktig kommando for GCC -kompilatoren vises nedenfor:

gcc -pthread -o tråder posix_threads.c

Bytt gjerne utdata- og inngangsfilnavnene.

Legger til alternativet -stread -alternativet til kompilatorkommandoene lar kompilatoren utføre koden med pThread.H bibliotek.

Årsak 3: CMake Flag mangler

Hvis du bruker en Make -fil for å samle programmet ditt, må du inkludere PThread -alternativene i filen.

Du kan gjøre det ved å legge til følgende linje i lage filen.

add_compile_options (-pthread)

Eller

SET (CMAKE_CXX_FLAGS "$ CMAKE_CXX_FLAGS -PTHREAD")

Lukking

I denne korte opplæringen dekket vi feilen "udefinert referanse til pthread_create" når vi jobbet med POSIX -tråder. Selv om vi dekket de universelle årsakene til denne feilen, kan det hende du må sjekke utviklingsmiljøet ditt og sikre at de nødvendige bibliotekene er koblet riktig.

Vi håper du likte opplæringen, takk for at du leste.