Referência indefinida ao pthread_create

Referência indefinida ao pthread_create
“Ao trabalhar com threads POSIX em programas C, você pode encontrar o erro“ Referência indefinida ao Pthread_create ”. Está associado principalmente a compiladores GCC e G ++ no Linux.

Neste tutorial, discutiremos algumas das principais causas desse erro e como resolvê -lo.”

Vamos começar.

Causa

Existem várias razões pelas quais a "referência indefinida ao erro de pthread_create" ocorre.

Um código de exemplo é como mostrado abaixo:

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

pthread_t tid;
printf ("Hello World Fron o tópico principal!\ n ");
pthread_create (& tid, null, thread, nulo);
pthread_join (tid, nulo);
pthread_exit ((void *) null);

void *thread (void *vargp)

printf ("Eu sou do tópico principal!\ n ");
pthread_exit ((void *) null);

O código acima contém um programa simples de pTHread que simplesmente imprime uma mensagem de texto simples. No entanto, se tentarmos compilar o código acima, ele retornará um erro.

Causa 1: Faixa de cabeçalho de thread ausente

Em C, a capacidade de criar vários threads em um programa é fornecida pelo PTHREAD.h. Portanto, antes que possamos usar o Pthread_create e todas as suas funções fornecidas, precisamos incluir este arquivo de cabeçalho em nosso programa.

Portanto, em alguns casos, não incluir o PTHRAD.H Arquivo de cabeçalho resultará na referência indefinida.

Podemos consertar isso incluindo o arquivo como mostrado:

#incluir

Uma vez incluído, podemos prosseguir para compilar e testar nosso programa.

Causa 2: Bandeira incorreta do compilador

Outra causa comum da "referência indefinida ao erro de pthread_create" é compilar seu programa com as bandeiras incorretas do compilador.

Por exemplo, se você estiver compilando seu programa C com o comando:

$ gcc -o threads posix_threads.c

Você receberá o erro "Referência indefinida ao Pthreads".

Ao garantir que os pthreads.O arquivo H está incluído no seu arquivo de cabeçalho; Você precisa compilar seu código com a bandeira do compilador certo.

O comando correto para o compilador GCC é mostrado abaixo:

gcc -tthread -o threads posix_threads.c

Sinta -se à vontade para substituir os nomes de arquivos de saída e entrada.

Adicionar a opção -Pthread aos comandos do compilador permite que o compilador execute o código com o pTHread.biblioteca H.

Causa 3: Falta da bandeira do cmake

Se você estiver usando um arquivo make para compilar seu programa, precisará incluir as opções PTHread no arquivo.

Você pode fazer isso adicionando a seguinte linha ao seu arquivo make.

add_compile_options (-thread)

Ou

Set (cmake_cxx_flags "$ cmake_cxx_flags -Pthread")

Fechamento

Neste curto tutorial, abordamos o erro “Referência indefinida ao Pthread_create” ao trabalhar com threads POSIX. Embora tenhamos cobrindo as causas universais desse erro, pode ser necessário verificar seu ambiente de desenvolvimento e garantir que as bibliotecas necessárias estejam vinculadas corretamente.

Esperamos que você tenha gostado do tutorial, obrigado por ler.