日期:2014-05-16  浏览次数:20672 次

如下一段linux pthread线程程序为什么编译的时候就是无法连接pthread线程库?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

int counter=0; /*两个线程都能访问的共享变量 */

void  thread1(void *arg);
void  thread2(void *arg);

int  main(int argc, char *argv[])
{
pthread_t id1,id2;

/*创建第1个线程*/
pthread_create(&id1,NULL,(void *)thread1, NULL);
/*创建第2个线程*/
pthread_create(&id2,NULL,(void *)thread2, NULL); 

pthread_join(id1,NULL); /*等待第1个线程结束*/
pthread_join(id2,NULL); /*等待第2个线程结束*/
  /*打印counter最后的值*/
 printf("最后的counter值为%d\n",counter);

exit(0);
}

void  thread1(void *arg) /*第1个线程执行代码*/
{
int i,val;
for(i=1;i<=5;i++){
val=++counter;

printf("第1个线程:第%d次循环,第1次引用counter=%d\n",i,counter);  /*LINE A*/
sleep(3);   /*睡眠或挂起3秒钟*/
printf("第1个线程:第%d次循环,第2次引用counter=%d\n",i,counter);  /*LINE B*/

counter=val;
}
}

void thread2(void *arg) /*第2个线程执行代码*/
{
int i,val;
for(i=1;i<=5;i++){
val=++counter; 
sleep(1);  /*睡眠或挂起1秒钟*/
printf("第2个线程:第%d次循环,counter=%d\n",i,counter);
     counter=val;  
}
}

网上都说是编译的时候没有加上 -lpthread选项,可是我加上了还是说undefined function “pthread_create”,"pthread_join".这是典型的没有加-lpthread的错误提示啊,为啥呀?难道是我的linux系统里面没有装pthread线程库?听说那个动态库叫pthread.so?我用find找了下是找不到。是这个原因吗?如果是的话这个线程库去哪下载?怎么安装呀?

------解决方案--------------------
试试

gcc main.c -L /usr/lib -lphtread
//or
gcc main.c -L /usr/lib64 -lphtread