Riferimento non definito a pThread_create

Riferimento non definito a pThread_create
"Quando si lavora con i thread POSIX nei programmi C, potresti trovare l'errore" Undefined Reference to pThread_Create ". È principalmente associato ai compilatori GCC e G ++ in Linux.

In questo tutorial, discuteremo alcune delle principali cause di questo errore e come risolverlo."

Iniziamo.

Causa

Ci sono diversi motivi per cui si verifica l'errore "Undefined Reference a pThread_Create".

Un codice di esempio è come mostrato di seguito:

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

pThread_t tid;
printf ("Hello World Fron il thread principale!\N");
pThread_create (& tid, null, thread, null);
pThread_Join (tid, null);
pThread_exit ((void *) null);

void *thread (void *vargp)

printf ("Sono dal thread principale!\N");
pThread_exit ((void *) null);

Il codice sopra contiene un semplice programma PThread che stampa semplicemente un semplice messaggio di testo. Tuttavia, se tentiamo di compilare il codice sopra, restituisce un errore.

Causa 1: file di intestazione del thread mancante

In C, la possibilità di creare più thread in un programma è fornita dalla Pthread.H. Pertanto, prima di poter utilizzare pThread_create e tutte le sue funzioni fornite, dobbiamo includere questo file di intestazione nel nostro programma.

Quindi, in alcuni casi, non riesce a includere la pthread.Il file di intestazione H si tradurrà nel riferimento immerso.

Possiamo risolvere questo problema includendo il file come mostrato:

#includere

Una volta inclusi, possiamo procedere alla compilazione e alla prova il nostro programma.

Causa 2: flag di compilatore errato

Un'altra causa comune dell'errore "Undefined Reference a pThread_Create" è la compilazione del programma con i flag di compilatore errati.

Ad esempio, se stai compilando il tuo programma C con il comando:

$ gcc -o threads posix_threads.C

Otterrai l'errore "Undefined Reference a Pthreads".

Assicurandoti che le pthreads.Il file h è incluso nel file di intestazione; Devi compilare il codice con il flag compilatore giusto.

Il comando corretto per il compilatore GCC è mostrato di seguito:

GCC -PThread -o thread Posix_Threads.C

Sentiti libero di sostituire gli file di output e di input.

L'aggiunta dell'opzione -phread ai comandi del compilatore consente al compilatore di eseguire il codice con PThread.Biblioteca H.

Causa 3: bandiera cmake mancante

Se si utilizza un file Make per compilare il programma, dovrai includere le opzioni PThread nel file.

Puoi farlo aggiungendo la seguente riga al tuo file.

add_compile_options (-pThread)

O

Set (cmake_cxx_flags "$ cmake_cxx_flags -pthread")

Chiusura

In questo breve tutorial, abbiamo coperto il "riferimento indefinito all'errore pThread_create" quando abbiamo lavorato con i thread POSIX. Sebbene abbiamo coperto le cause universali di questo errore, potrebbe essere necessario controllare il tuo ambiente di sviluppo e garantire che le biblioteche richieste siano collegate correttamente.

Speriamo che ti sia piaciuto il tutorial, grazie per la lettura.