Referencia indefinida a pthread_create

Referencia indefinida a pthread_create
"Cuando trabaje con POSIX Hreads en los programas C, puede encontrar el error" Referencia indefinida a pthread_create ". Se asocia principalmente con los compiladores GCC y G ++ en Linux.

En este tutorial, discutiremos algunas de las principales causas de este error y cómo resolverlo."

Empecemos.

Causa

Hay varias razones por las cuales se produce el error de "referencia indefinida a pthread_create".

Un código de ejemplo es como se muestra a continuación:

#incluir
void *hilo (void *vargp);
int main ()

pthread_t tid;
printf ("Hola Mundo de Fron el hilo principal!\norte");
pthread_create (& tid, null, hilo, nulo);
pthread_join (tid, nulo);
pthread_exit ((void *) null);

void *hilo (void *vargp)

printf ("Soy del hilo principal!\norte");
pthread_exit ((void *) null);

El código anterior contiene un programa PTHREAD simple que simplemente imprime un mensaje de texto simple. Sin embargo, si intentamos compilar el código anterior, devuelve un error.

Causa 1: Falta Archivo de encabezado de hilo

En C, la capacidad de crear múltiples hilos en un programa es proporcionada por el PTHREAD.H. Por lo tanto, antes de que podamos usar el pthread_create y todas sus funciones proporcionadas, debemos incluir este archivo de encabezado en nuestro programa.

Por lo tanto, en algunos casos, no incluir el PTHREAD.H El archivo de encabezado hará la referencia involuntaria.

Podemos solucionar esto incluyendo el archivo como se muestra:

#incluir

Una vez incluido, podemos proceder a compilar y probar nuestro programa.

Causa 2: bandera de compilador incorrecto

Otra causa común del error de "referencia indefinida a pthread_create" es compilar su programa con los indicadores del compilador incorrecto.

Por ejemplo, si está compilando su programa C con el comando:

$ GCC -O Threads Posix_threads.C

Obtendrá el error de "referencia indefinida a pThreads".

Mientras se asegura de que los Pthreads.h El archivo está incluido en su archivo de encabezado; Necesita compilar su código con el indicador del compilador correcto.

El comando correcto para el compilador GCC se muestra a continuación:

gcc -pthread -o hilos posix_threads.C

Siéntase libre de reemplazar los nombres de salida de salida y entrada.

Agregar la opción -pThread a los comandos del compilador permite que el compilador ejecute el código con el pthread.H Biblioteca.

Causa 3: Falta de la bandera Cmake

Si está utilizando un archivo de fabricación para compilar su programa, deberá incluir las opciones de PTHREAD en el archivo.

Puede hacerlo agregando la siguiente línea a su archivo de fabricación.

ADD_COMPILE_OPTIONS (-PTHREAD)

O

Set (cmake_cxx_flags "$ cmake_cxx_flags -pthread")

Clausura

En este breve tutorial, cubrimos la referencia indefinida al error pthread_create "cuando trabaja con POSIX hilos. Aunque cubrimos las causas universales de este error, es posible que deba verificar su entorno de desarrollo y asegurarse de que las bibliotecas requeridas estén vinculadas correctamente.

Esperamos que hayas disfrutado el tutorial, gracias por leer.