问题描述
我必须使用带有gcc的POSIX线程来做一个程序,当我尝试对其进行编译时,终端显示如下消息:
I must do a program with POSIX threads with gcc and when i try to compile it, the terminal show a message like:
/tmp/ccw594wa.o:在函数main':POSIX.c:(.text+0xda): undefined reference to
pthread_create'中POSIX.c :(.text + 0x102):对'pthread_create'的未定义引用collect2:萨尔瓦多州人民发展银行1
/tmp/ccw594wa.o: In function main':POSIX.c:(.text+0xda): undefined reference to
pthread_create'POSIX.c:(.text+0x102): undefined reference to `pthread_create'collect2: ld devolvió el estado de salida 1
有人可以帮助我确定错误原因吗??,该程序必须实现生产者-消费者算法来完成某些任务,我的代码(未完成)是下一个代码
can someone help me to identify the error cause??, the program has to implemente the producer-consumer algorithm to do some task, my code (unfinished) is the next one
#include "stdio.h"
#include "pthread.h"
#define p printf
#define s scanf
pthread_mutex_t exmut;
float suma=0;
float x;
int iteraciones;
void *h_productor (void *arg) /*Procedimiento del productor*/
{
}
void *h_consumidor (void *arg) /*Procedimiento del consumidor*/
{
}
main() /*Hilo principal*/
{
int error;
int *out, idp=1, idc=2;
pthread_t productor; /*Hilo que realiza el proc. del productor*/
pthread_t consumidor; /*Hilo que realiza el proc. del consumidor*/
p ("\n\n Cálculo de e^x, por medio de una serie infinita... =)!");
p ("\n\n x= ");
s ("%f",&x);
do
{
p (" No. de iteraciones: ");
s ("%d",&iteraciones);
if (iteraciones<1 || iteraciones>10)
p("\n Número no válido, debes introducir un valor de entre 1 y 10\n");
}
while (iteraciones<1 || iteraciones>10);
pthread_mutex_init (&exmut, NULL);
/*Creamos ambos hilos, tanto el productor como el consumidor*/
error = pthread_create (&productor,NULL,h_productor,&idp);
error = pthread_create (&consumidor,NULL,h_consumidor,&idc);
/*
/*Esperamos a que ambos hilos terminen/
error = pthread_join (h_productor,(void **)&out);
error = pthread_join (h_consumidor,(void **)&out);
*/
p ("\n La aproximación para %d iteraciones del valor de e^%f= %f",iteraciones,x,suma);
}
推荐答案
您可以尝试使用-pthread
选项进行编译,该选项告诉gcc链接到pthread库.
You could try compiling with the -pthread
option, which tells gcc to link against the pthread library.
这篇关于使用带有gcc的线程的POSIX程序的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!