如下一段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