`
luozhonghua2014
  • 浏览: 62610 次
文章分类
社区版块
存档分类
最新评论

线程异常:undefined reference to 'pthread_create' 处理

 
阅读更多

源码:

#include <stdio.h>
#include <pthread.h>
#include <sched.h>


void *producter_f (void *arg);
void *consumer_f (void *arg);




int buffer_has_item=0;
pthread_mutex_t mutex;


int running =1 ;


int main (void)
{
pthread_t consumer_t;
pthread_t producter_t;

pthread_mutex_init (&mutex,NULL);

pthread_create(&producter_t, NULL,(void*)producter_f, NULL );
pthread_create(&consumer_t, NULL, (void *)consumer_f, NULL);
usleep(1);
running =0;
pthread_join(consumer_t,NULL);
pthread_join(producter_t,NULL);
pthread_mutex_destroy(&mutex);

return 0;
}


void *producter_f (void *arg)
{
while(running)
{
pthread_mutex_lock (&mutex);
buffer_has_item++;
printf("生产,总数量:%d\n",buffer_has_item);
pthread_mutex_unlock(&mutex);
}
}


void *consumer_f(void *arg)
{
while(running)
{
pthread_mutex_lock(&mutex);
buffer_has_item--;
printf("消费,总数量:%d\n",buffer_has_item);
pthread_mutex_unlock(&mutex);
}
}



错误场景:

[root@luozhonghua 04]# gcc -o mutex ex04-5-mutex.c

/tmp/ccZuFiqr.o: In function `main':
ex04-5-mutex.c:(.text+0x3d): undefined reference to `pthread_create'
ex04-5-mutex.c:(.text+0x61): undefined reference to `pthread_create'
ex04-5-mutex.c:(.text+0x8b): undefined reference to `pthread_join'
ex04-5-mutex.c:(.text+0x9f): undefined reference to `pthread_join'

collect2: ld returned 1 exit status


分析:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a


处理:

在编译中加 -lpthread 参数
[root@luozhonghua 04]# gcc -lpthread -o mutex ex04-5-mutex.c



分享到:
评论

相关推荐

    undefined reference to 'pthread_create'的解决方法

    在编程过程中,尤其是在使用多线程技术时,可能会遇到“undefined reference to 'pthread_create'”这样的链接错误。这个错误提示表明,在编译期间,编译器找不到对应的`pthread_create`函数定义,它属于POSIX线程库...

    undefined reference to ‘pthread_create’的解决方法

    undefined reference to ‘pthread_create’undefined reference to ‘pthread_join’ 问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,...

    opencv移植到arm, 包含cmake包

    ../../lib/libopencv_core.so: undefined reference to `pthread_key_create 解决方法: 修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除 错误二: Linking CXX ...

    基于pthread_create,readlink,getpid等函数的学习与总结

    `pthread_create`是POSIX线程库(pthread)中的核心函数,用于创建新的线程。它允许程序员在一个进程中创建多个执行线程,从而实现并行处理。以下是`pthread_create`函数的详细解析: ```c #include &lt;pthread.h&gt; ...

    glibc-2.2.5.tar.gz

    5. **线程支持**:glibc提供了线程创建、同步和通信的API,如pthread_create、pthread_join、mutex、condition_variable等,使得多线程编程成为可能。 6. **动态链接**:glibc支持动态链接,使得程序可以在运行时...

    opencv移植到arm教程

    ../../lib/libopencv_core.so: undefined reference to `pthread_key_create' ../../lib/libopencv_core.so: undefined reference to `pthread_getspecific' ... make[2]: *** [bin/opencv_test_calib3d] Error ...

    Windows下使用Dev-C++开发基于pthread.h的多线程程序实例

    如果在编译过程中遇到“undefined reference to 'pthread_create'”的错误,说明链接器无法找到pthread_create函数的定义。解决这个问题的办法是在编译器选项中加入-lpthread参数,以便链接器链接到pthread库。 ...

    错误:sem_union的存储大小未知问题的解决方法

    例如,如果你正在使用线程编程,并遇到"undefined reference to 'pthread_create'"或"undefined reference to 'pthread_join'"的错误,这通常是因为没有正确链接到`pthread`库。解决方法是在编译命令中添加`-...

    Ubuntu 蓝牙全攻略-- HFP for Linux.docx

    3. **错误提示:“undefined reference to symbol 'pthread_create'”**: - 解决方案:在相关Makefile文件中增加`-lpthread`参数。 4. **错误提示:“ImportError: No module named glade”**: - 解决方案:...

    linux环境下的c编程代码

    `fork()`创建新进程,`pthread_create()`创建线程。 9. **信号处理**: Linux系统使用信号进行进程间通信和异常处理。`&lt;signal.h&gt;`头文件提供了处理信号的函数,如`signal()`。 10. **系统调用**: 通过`syscall...

    linux下组播遇到的问题及解决办法3.docx

    - **pthread_key_create**:用于线程特定数据。 - **指针数组和数组指针的区别**:指针数组是一组指针,数组指针是指向数组的指针。 - **对结构体某一个成员变量赋初值**:使用指定成员初始化。 - **统计目录下的...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Parameters to C/C++ functions are either input to the function, output from the function, or both. Input parameters are usually values or const references, while output and input/output parameters ...

Global site tag (gtag.js) - Google Analytics