问题:

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_example.c : c multiple thread programming in linux

*author : falcon

*E-mail : tunzhj03@st.lzu.edu.cn

*/

#include

#include

#include

#include

#define MAX 10

pthread_t thread[2];

pthread_mutex_t mut;

int number=0,i;

void *thread1()

{

printf ("thread1 : I'm thread 1/n");

for (i = 0; i < MAX; i++)

{

printf("thread1 : number = %d/n",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(1);

}

printf("thread1 :主函数在等我完成任务吗?/n");

pthread_exit(NULL);

}

void *thread2()

{

printf("thread2 : I'm thread 2/n");

for (i = 0; i < MAX; i++)

{

printf("thread2 : number = %d/n",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(1);

}

printf("thread2 :主函数在等我完成任务吗?/n");

pthread_exit(NULL);

}

void thread_create(void)

{

int temp;

memset(&thread, 0, sizeof(thread)); //comment1

/*创建线程*/

if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2

printf("线程1创建失败!/n");

else

printf("线程1被创建/n");

if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3

printf("线程2创建失败");

else

printf("线程2被创建/n");

}

void thread_wait(void)

{

/*等待线程结束*/

if(thread[0] !=0) { //comment4

pthread_join(thread[0],NULL);

printf("线程1已经结束/n");

}

if(thread[1] !=0) { //comment5

pthread_join(thread[1],NULL);

printf("线程2已经结束/n");

}

}

int main()

{

/*用默认属性初始化互斥锁*/

pthread_mutex_init(&mut,NULL);

printf("我是主函数哦,我正在创建线程,呵呵/n");

thread_create();

printf("我是主函数哦,我正在等待线程完成任务阿,呵呵/n");

thread_wait();

return 0;

}

linux编译有线程的文件要加什么参数,Linux多线程实例,在编译中要加 -lpthread参数...相关推荐

  1. linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep

    linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...

  2. linux怎么创建牡蛎_文件amp;目录小技巧 | Linux后门系列

    0x01 Linux 目录技巧 我们都知道 Windows 下文件和文件夹命名是有很多规则和限制的,但是可以通过一些程序来绕过限制,今天我们来看看 Linux 有哪些有趣的规则 参考 https:// ...

  3. 【Linux】~ 如何将本地文件(windows)复制(传输)到虚拟机中

    目录: 0. 前言 1. 具体操作 2. scp指令 2.1 作用 2.2 举例说明 2.3 参数说明 参考文献 声明 0. 前言 很多时候对于一个新手来说,对刚开始使用虚拟机不熟悉,想要将我们本地的 ...

  4. linux如何给windows传文件,教你如何实现Linux与windows文件互传

    一.概述 本文讲述了在Linux主机与windows主机之间如何互传文件的方法.因为有的时候,linux主机中的一些文件可能会在windows环境下用到.例如在linux主机中抓了一些图片,想把它们传 ...

  5. linux 恢复已删除的文件,恢复已删除的Linux文件

    恢复已删除的Linux文件 发布时间:2008-09-08 17:09:31   作者:佚名   我要评论 作为一个多用户.多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的.尽管删除命令只 ...

  6. linux解压完的文件在哪里,如何在 Linux 下解压 Zip 文件

    先决条件:安装了unzip 命令:sudo apt install unzip 确认你的系统中安装了unzip 就可以通过unzip来解压 zip 归档文件 在放 zip 文件的目录,用下面的命令: ...

  7. linux 已打开文件图标管理,Linux_没有启动图标利用Linux命令在终端打开文件,  在Linux系统中,打开一个 - phpStudy...

    没有启动图标利用Linux命令在终端打开文件 在Linux系统中,打开一个文件很简单,只要有启动图标就可以了,但是如果没有启动图标的话要如何在终端下打开文件呢?使用命令就能很好的解决这个问题,下面小编 ...

  8. linux下怎么看影子文件,IT外包桌面解决方案--Linux怎么查找影子文件并进入?

    与众不同的服务是因为有心 所有艾锑人可能都知道艾锑无限为客户提供三种与客户接触的方式,一种是产品,一种是技术,还有一种是服务,那这三种所谓的方式构建起一个三角形,这种稳固的体系,看起来还不错,但我们细 ...

  9. html5 循环加载图片,解决vue的 v-for 循环中图片加载路径问题

    先看一下产品需求,如下图所示, 产品要求图片和它的名称一一对应,本来是非常简单的需求,后台直接返回图片路径和名称,前台直接读取就可以了,但是我们没有存储图片的服务器,再加上是一个实验性的需求,图片需要 ...

最新文章

  1. Entity Framework应用:根据实体的EntityState状态实现增删改查
  2. python中tornado的第一个例子
  3. python中if else语句用法_讲解Python中if语句的嵌套用法
  4. “智慧城市”建设中的金融力量
  5. JAVA card 应用开发(二) 在项目添加APPLET
  6. 中间代码生成器-5-编译原理
  7. UVA 307 Sticks
  8. 公用技术——设计模式19——行为型模式——备忘录模式——待补充
  9. CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
  10. uibinder表单提交_使用UIBinder的GWT自定义按钮
  11. .net core精彩实例分享 -- LINQ
  12. C++中static的用法
  13. U盘快捷方式病毒修复
  14. 深度学习模型提升性能的策略
  15. 注意int类型数据相加的溢出
  16. Python之模块pandas基础知识
  17. django和mezzanine搭建博客小站1
  18. Android 部分手机拍照后获取的图片被旋转
  19. 作为一名非Commiter,如何向开源社区提交自己的代码
  20. 【Java面试】什么是字节码?采用字节码的好处是什么?

热门文章

  1. CodeForces - 985E Pencils and Boxes
  2. Elasticsearch(二):理解index, Document, Field
  3. 引用 《大明宫词》经典台词89句
  4. sqlserver 中 @@rowcount的简单用法
  5. Spark+Scala建设数仓和数据分析
  6. MCAFee(麦咖啡)进程解释
  7. 简易的网页小游戏之接星星,HTML+JavaScript+css(一丢丢)
  8. 拖拽或点击上传(支持苹果safari浏览器)
  9. drawboard pdf拆分文件_请收藏!这是一份最全的PDF问题解决方案。
  10. CC2640R2F学习笔记(8)——Watchdog看门狗使用