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即可

Eclipse编译时函数报错:Undefined reference to 'pthread_create'相关推荐

  1. linux使用gcc编译报错“undefined reference to `pthread_create'”

    下面这个例子通过一个代码说明两个线程关联一个函数,实现并发操作,预期结果这两个线程都使用了print函数,它们各自执行各自的,不会因为使用了同一个函数而受到影响. my_test.cpp #inclu ...

  2. matlab使用mex编译c语言报错undefined reference to `__imp_WSAStartup‘

    matlab中使用mex编译c语言文件报错提示: undefined reference to __imp_WSAStartup' 最近我在做一个simulink和其他仿真软件的联合仿真,需要用到ud ...

  3. Linux下eclipse编译C/C++程序遇到 undefined reference to `pthread_create'的异常解决办法

    解决方法:右键点击的当前project->properties->C/C++ Build->Settings->Tool Settings选项卡->GCC C Linke ...

  4. pthread_create函数编译时报错:undefined reference to 'pthread_create'

    错误: pthread_create函数编译时报错:undefined reference to 'pthread_create' pthread_create()和pthread_atfork()函 ...

  5. 记录一个CMake编译报错undefined reference to vtable问题的解决

    在编写一个简单的CMake demo: 问题描述 文件结构如下:头文件和cpp分别放在两个文件夹下面 如果使用下面的写法,会报错"undefined reference to vtable ...

  6. 解决交叉编译连接器包含-ldl编译选项,但仍然报错undefined reference to ‘__dlsym‘

    交叉编译连接器包含-ldl编译选项,但仍然报错undefined reference to '__dlsym' 文章目录 交叉编译连接器包含-ldl编译选项,但仍然报错undefined refere ...

  7. 【错误记录】Android 编译时技术报错 ( 注解处理器 process 方法多次调用问题 )

    文章目录 一.报错信息 二.问题分析 三.解决方案 注解处理器 AbstractProcessor 中的 process 方法可能会调用多次 , 在生成代码时 , 一定要注意 , 检测到 注解节点 后 ...

  8. 解决vs2013编译时scanf报错的方法

    前言 在使用VS2013时可能会遇到scanf函数报错的问题,这里提供一种解决方法 步骤 1.找到VS2013的安装路径,找到此界面,打开VC文件夹 2.打开下图中的文件夹 3.下载一个Notepad ...

  9. cmake编译时中途报错:undefined reference to ‘xxx‘.未定义引用

    尝试一:猜测是gcc版本问题 解决方案(无效):见gcc版本升级博客 尝试二: 解决方案(无效): 这篇博客的解决方案没有解决我的问题,里提到库文件,是一个很好的思路.我点击报错提到的cpp文件,看到 ...

最新文章

  1. Educational Codeforces Round 66 (Rated for Div. 2) B. Catch Overflow!
  2. python中常用的序列化模块_Python常用模块之pickle——对象序列化
  3. pytorch 同步gpu
  4. 尝试修改LabelImg,将以对顶角画框改成以对角线相交点向四周画框
  5. Ext的viewport在所有浏览器下出现界面内容消失的问题
  6. centos系统下安装python3以及pip3
  7. C++之类型萃取技巧
  8. 微软公司部署小型数据中心网络连接产品
  9. 人民网舆情:公众对网约车或存偏见
  10. JAVA 蔡羽 基础知识漫谈
  11. 高性能WEB开发:DOM编程
  12. 滚动长截图,截取第三方应用,如微博、知乎、头条长图文...
  13. 依时利考勤机说明书_指纹考勤机如何安装及使用说明|依时利
  14. matlab偏微分方程工具箱应用简介,MATLAB工具箱简介
  15. 【Matlab土壤分类】多类SVM土壤分类【含GUI源码 1398期】
  16. 【java基础】同比和环比
  17. 快速排序_查找第k小元素
  18. Java打印101-150之间所有的质数
  19. v-for和v-show一起使用
  20. 数据报表类(BI)项目测试应该如何去啃?

热门文章

  1. self.modules() 和 self.children()的区别
  2. matlab2c使用c++实现matlab函数系列教程-sortrows函数
  3. matlab2c使用c++实现matlab函数系列教程-harmmean函数
  4. quartus仿真29:JK触发器实现序列信号发生器0010111(分析)
  5. Python攻克之路-xml模块
  6. Win8Metro(C#)数字图像处理--2.7图像伪彩色
  7. wtforms Form实例化流程(源码解析)
  8. Mac 10.12安装数据库管理工具MySQL Workbench
  9. window自动备件软件
  10. EasyUI Tree添加节点