Nieokreślone odniesienie do pthread_create

Nieokreślone odniesienie do pthread_create
„Pracując z wątkami POSIX w programach C, możesz znaleźć błąd„ Niezdefiniowane odniesienie do pthread_create ”. Jest to głównie powiązane z kompilatorami GCC i G ++ w Linux.

W tym samouczku omówimy niektóre z głównych przyczyn tego błędu i jak go rozwiązać."

Zacznijmy.

Przyczyna

Istnieje kilka powodów, dla których występuje błąd „nieokreślone odniesienie do pthread_create”.

Jeden przykładowy kod jest pokazany poniżej:

#włączać
void *wątek (void *vargp);
int main ()

pthread_t tid;
printf („Hello World fron główny wątek!\N");
pthread_create (& tid, null, wątek, null);
pthread_join (tid, null);
pthread_exit ((void *) null);

void *wątek (void *vargp)

printf („Jestem z głównego wątku!\N");
pthread_exit ((void *) null);

Powyższy kod zawiera prosty program PTHREAD, który po prostu drukuje prostą wiadomość tekstową. Jeśli jednak spróbujemy skompilować powyższy kod, zwraca błąd.

Przyczyna 1: Brak pliku nagłówka wątku

W C możliwość tworzenia wielu wątków w programie jest dostarczana przez PTHREAD.H. Dlatego zanim będziemy mogli użyć pthread_create i wszystkich jego dostarczonych funkcji, musimy dołączyć ten plik nagłówka w naszym programie.

Stąd w niektórych przypadkach nie uwzględniają PTHREAD.H Plik nagłówka spowoduje niezakłócone odniesienie.

Możemy to naprawić, włączając plik, jak pokazano:

#włączać

Po uwzględnieniu możemy przejść do kompilacji i przetestowania naszego programu.

Przyczyna 2: Niepoprawna flaga kompilatora

Inną powszechną przyczyną błędu „Niezdefiniowanego odniesienia do pthread_create” jest opracowanie programu z nieprawidłowymi flagami kompilatora.

Na przykład, jeśli kompilujesz program C za pomocą polecenia:

$ gcc -o wątki posix_threads.C

Otrzymasz błąd „Nieokreślone odniesienie do pthreads”.

Upewniając się, że PTHREADS.Plik H jest zawarty w pliku nagłówka; Musisz skompilować swój kod z odpowiednią flagą kompilatora.

Prawidłowe polecenie kompilatora GCC pokazano poniżej:

gcc -pthread -o wątki posix_threads.C

Zapraszam do wymiany danych wyjściowych i wejściowych.

Dodanie opcji -pthread do poleceń kompilatora umożliwia kompilator wykonanie kodu za pomocą pthread.Biblioteka H.

Przyczyna 3: Brak flagi cmake

Jeśli używasz pliku Make do kompilacji programu, musisz podać opcje pthread w pliku.

Możesz to zrobić, dodając następujący wiersz do pliku Make.

add_compile_options (-pthread)

Lub

Set (cmake_cxx_flags "$ cmake_cxx_flags -pthread")

Zamknięcie

W tym krótkim samouczku omówiliśmy błąd „Nieokreślone odniesienie do pthread_create” podczas pracy z wątkami POSIX. Chociaż omówiliśmy uniwersalne przyczyny tego błędu, może być konieczne sprawdzenie środowiska programistycznego i upewnić się, że wymagane biblioteki są poprawnie powiązane.

Mamy nadzieję, że podobał Ci się samouczek, dzięki za przeczytanie.