eclipse 函数编译时报错:undefined reference to `pthread_create’

from  http://www.xinze.me/tag/eclipse/



Eclipse + CDT:

pthread_create函数编译时报错:undefined reference to `pthread_create’

undefined reference to `pthread_create’
undefined reference to `MD5′

由于pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,在编译中要加 -lpthread参数。

例如:在加了头文件#include 之后执行 pthread.c文件,需要使用如下命令:

gcc thread.c -o thread -lpthread

这种情况类似于
的使用,需在编译时加 -m 参数。

+++++++++
Linux上编译pthread程序,默认会出错。如题。原因如下。

-pthread
Add support for multithreading using the POSIX threads library.
This option sets flags for both the preprocessor and linker. It
does not affect the thread safety of object code produced by the
compiler or that of libraries supplied with it. These are HP-UX
specific flags.

所以如果在gcc的编译中(更准确的说是链接中)没有启动pthread的话,就会出现如下的链接错误。
pthread_test.c:(.text+0x8a): undefined reference to `pthread_create’
collect2: ld returned 1 exit status

另外一个参数-lpthread也能起到同样的作用。所以可以看出-pthread的本质应当时引入了thread对应的library。默认情况下,pthread对应的library在gcc编译链接中是不会被引入的。
所以 gcc -o backupfile backupfiles.c -pthread

出现如下错误:
undefined reference to ‘pthread_create’
undefined reference to ‘pthread_join’

问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。

问题解决:
在编译中要加 -lpthread参数
gcc thread.c -o thread -lpthread
thread.c为你些的源文件,不要忘了加上头文件#include

+++++++++

eclipse
解决方法如下:
Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries
在Libraries(-l)中添加pthread即可
在Libraries(-l)中添加crypto即可

### 回答1: 当在使用gcc编译程序,出现"undefined reference to pthread_create"的错误信息,很可能是由于程序中使用了多线程功能,并且没有正确链接pthread。 解决这个问题的方法是,在编译程序添加-lpthread选项来链接pthread。具体步骤如下: 1. 打开终端或命令提示符窗口,进入到源代码所在的目录。 2. 使用gcc编译程序,并加上-lpthread选项,例如: $ gcc source.c -lpthread -o executable 3. 执行上述命令后,重新编译程序,并生成一个可执行文件。 4. 如果编译成功,可执行文件将会生成在当前目录中。 需要注意的是,-lpthread选项必须位于源代码文件名之后,确保正确链接了pthread。 此外,还有一些特殊情况可能导致该错误的出现,例如: - 没有正确包含pthead.h头文件:需要在源代码文件中添加#include <pthread.h>以引入pthread函数声明和定义。 - 编译器或系统缺少pthread:需要通过安装相应的开发包或更新编译器来解决该问题。 总之,gcc undefined reference to pthread_create错误的原因是缺少对pthread的连接。通过添加-lpthread选项,重新编译程序可以解决该问题。 ### 回答2: "undefined reference to `pthread_create'" 是一个编译错误,它通常指的是在编译缺少了与 `pthread_create` 函数链接。 这种错误通常是由于以下几个原因引起的: 1. 缺少对 `pthread` 链接:在编译程序,需要使用 `-pthread` 或 `-lpthread` 选项来链接 `pthread` 。例如,在使用 `gcc` 编译,可以使用命令 `gcc -pthread main.c -o main` 来链接 `pthread` 。 2. 未正确包含 `pthread.h` 头文件:如果在程序中使用了 `pthread_create` 函数,那么需要在程序中包含 `pthread.h` 头文件。确保在使用 `pthread_create` 函数之前,包含了正确的头文件。 3. 缺少 POSIX thread :`pthread` 是 POSIX 线程的一部分。因此,如果编译环境不支持 POSIX 线程,就会出现该错误。在这种情况下,需要检查编译环境是否支持 POSIX 线程,并使用适当的方法安装。 综上所述,当出现 `gcc undefined reference to pthread_create` 错误,需要确保正确地链接 `pthread` ,并正确包含 `pthread.h` 头文件。同,还要检查编译环境是否支持 POSIX 线程。 希望以上回答对您有所帮助! ### 回答3: gcc undefined reference to pthread_create是一个常见的错误信息,它表示在使用gcc编译缺少对pthread_create函数的引用或链接。 pthread_create函数属于POSIX线程(libpthread),用于创建一个新的线程。当程序中使用了pthread_create函数但未正确引用或链接线程,就会出现该错误。 要解决这个问题,我们需要在编译命令中添加对线程的引用。可以使用"-lpthread"选项来告诉gcc链接线程。 以下是一个示例的编译命令: gcc -o my_program my_program.c -lpthread 在上面的命令中,"-o my_program"指定了输出文件的名称为"my_program","my_program.c"是需要编译的源代码文件,"-lpthread"告诉gcc链接线程。 通过在编译命令中添加"-lpthread"选项,就可以解决gcc undefined reference to pthread_create错误。另外,还需要确保系统中已经正确安装了POSIX线程,否则可能会出现其他问题。 总结一下,要解决gcc undefined reference to pthread_create错误,需要在编译命令中添加对线程的引用,使用"-lpthread"选项来链接线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值