When a programmer uses pthread_create function program to create threads in a C program, then he/she may receive “undefined reference to ‘pthread_create’” error. This error mainly occurs on Linux platform while compiling a C Program in G++ or GCC.
Working Solution for Undefined reference to ‘pthread_create’ error in C – Linux
So the solution to this error is
1) Make sure you have added #include <pthread.h>” in your header
Add -pthread while compiling the program
2) Some people suggest adding -lpthread while compiling the program. It may work for some people. Adding -lpthread will only link the pthread library and it will not define the pre-defined macros too.
Note
On the other side, adding -pthread will link the library and it will configure the compilation for threads too. So it is always recommended to use -pthread instead of -lpthread.
Alternative Solution
If you are using eclipse, then you can add this setting.
Goto
1) properties >> c/c++Build >> setting >> GCC C++ linker >> libraries
2) Add -pthread at the top.
Sample code of C that produces this error
#include <stdlib.h> #include <stdio.h> #include <pthread.h> void *new_thread (void *arg) { printf("A new Thread Created!"); return arg; } int main () { pthread_t tid; int checking; checking = pthread_create(&tid, NULL, new_thread, NULL); if (checking !=0) perror("create Thread"); pthread_exit(NULL); }
Save the code as T1.c
Now compile the code by following the below commands.
gcc T1.c -o T1 -pthread ./T1
Output
A new Thread Created
Davide says
Thank you so much
Akial says
Thank you. It is worked.
umesh says
thank you