How to fix “undefined reference to pthread create” error

The usage of any programming language involves the working of various internal or external libraries. For instance, the c++ language includes an array and math libraries that can be imported using their respective headers. Similarly, there is another library called pthread that can be utilized in c++. In Linux-based systems, the pthread is an API that is provided by Linux which allows the manipulation of thread-related processes. It can help build multiple threads and is extremely efficient for multicore systems. While dealing with threads and pthread in Linux, the “undefined reference to pthread create” error is often encountered.

This article will provide a detailed guide on what invokes this error as well as what can be done to fix this error.

Methods for fixing the “undefined reference to pthread create” problem?

There can be many different causes for the occurrence of this error. This section will guide you on all these reasons and the solutions to each reason are also provided.

Reason 1: Missing header file

The function “pthread create” belongs to the pthread library. So, it is extremely necessary to import the header file into the c++ file. If the header file is missing, the error may be invoked. The following image shows that the pthread header file is not included:

Solution: Add header file

The obvious solution to a missing header is to import the missing header into the program file. To achieve this simply copy the code below and insert it into the program to import the pthread.h header file:

#include <pthread.h>

Check out the snippet below in which we have added the <pthread.h> header file:

Reason 2: Incorrect compilation

When compiling the c program, it is extremely important to use the correct syntax to run the pthread functions. For instance, if you compile the program in the following way, the error will occur

$ gcc example.c -o example

Solution: Use correct syntax for compilation

To fix the error, the correct compile command needs to be used for threads. The syntax below is a demonstration of the proper way to write the compile command for a c program:

$ gcc -pthread -o threads example.c

As shown below, using this syntax will remove the error and also successfully compile the program:

Following both these solutions should help remove the “undefined reference to pthread create” error.

Conclusion

The error “undefined reference to pthread create” is caused when the pthread header is not included in the program file. The other cause is that pthread is not used in the command line while compiling the code. This post also provides solutions to avoid this error. To counter the error, you need to either include the pthread header file or you need to follow the recommended syntax to compile a program. The article gives in-depth knowledge on how these solutions can be implemented to remove the error.