#include <stdio.h>

#include <pthread.h>

void *ThreadFunc(void *pArg)  //参数的值为123

{

int i = 0;

for(; i<10; i++)

{

printf("Hi,I'm child thread,arg is:%d\n", (int)pArg);

sleep(1);

}

pthread_exit(NULL);

}

int main()

{

pthread_t thdId;

pthread_create(&thdId, NULL, ThreadFunc, (void *)123 );

int i = 0;

for(; i<10; i++)

{

printf("Hi,I'm main thread,child thread id is:%x\n", thdId);

sleep(1);

}

return 0;

}

编译时需要带上线程库选项:

gcc  -o  a  a.c  -lpthread

看到 -lpthread就想到了

Gcc –o ./bin/main.exe  ./src/*.c  -I ./include/

但是似乎是不同的。搜索如下:

gcc编译线程程序,为什么要加-lpthread,头文件已经包含了<pthread.h>了啊

包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库

http://zhidao.baidu.com/link?url=4jUrmjtqneMui7KJmOpxti_HDsAvYjmGhwuVJFLVgdHOrKfC3DKs68cm7g0y6FGxpc_qExVCwz4PMbeb_JqnV_

-lpthread -lm 这两个参数在多线程中起到什么作用? -pthread和-lpthread有什么区别?

lpthread是表示要连接到pthread的库是这里省略的lib,你应该可以找到共享库libpthread.so的。因为pthread编程用到的函数在pthread库里面,就像你使用pow等数学计算函数,需要用到math.h.需要 -lm。 

http://zhidao.baidu.com/link?url=pIOHTwSTuya_zuzCPEeT-1ibV01ISyWSUSX_Duu4qA2OKbHCbkr-7HKOBzIGtcxQ27hvrlqEfqcrqVwzW4wzua

 
 
 

-pthread 相比于 -lpthread 链接选项究竟多做了什么工作呢?我们可以在verbose模式下执行一下对应的gcc命令行看出来
http://chaoslawful.iteye.com/blog/568602

 

gcc -lpthread 干什么用的更多相关文章

  1. gcc -lpthread

    转自:http://www.cnblogs.com/suntp/p/6473751.html 如果用gcc编译使用了POSIX thread的程序时,通常需要加额外的选项,以便使用thread-saf ...

  2. Gcc 命令大全

    gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项. 1.无选项编译链接 例:命令:gcc test.c //会默认生成a.out可执行程序 2.-E: 进行预处理和编译,生成汇编 ...

  3. linux下libuv库安装教程

    下载并编译libuv libuv需要自己手动下载源码,并手动编译. 当前目录为:/home/xlz/test/github,在后面,会用$PATH来代替,我的系统的Debian8,64bit. $gi ...

  4. 【linux草鞋应用编程系列】_4_ 应用程序多线程

    一.应用程序多线程     当一个计算机上具有多个CPU核心的时候,每个CPU核心都可以执行代码,此时如果使用单线程,那么这个线程只能在一个 CPU上运行,那么其他的CPU核心就处于空闲状态,浪费了系 ...

  5. linux的<pthread.h>

    转自:http://blog.sina.com.cn/s/blog_66cc44d00100in5b.html Linux系统下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多 ...

  6. 多线程 or 多进程?[转]

    在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术的选型上,比如WEB服务器技术中,Apache是 采用多进程的(perfork模式,每客户连接对应一个进 ...

  7. Linux多线程编程(不限Linux)【转】

    ——本文一个例子展开,介绍Linux下面线程的操作.多线程的同步和互斥. 前言 线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步 ...

  8. 多线程 or 多进程 (转强力推荐)

    在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进 ...

  9. linux实现c多进程

    线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的Unix也支持线程的概念,但是在一个进程(process)中只允许 ...

随机推荐

  1. 关于AutoCAD.NET的辅助方法

    求中点坐标: /// <summary> /// 中点 /// </summary> /// <param name="StartPoint"> ...

  2. JVM ClassLoader加载过程

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载机制. 1)三个类加载器: bootstra ...

  3. MapReduce详解

    1.mapreduce之shuffle http://blog.csdn.net/thomas0yang/article/details/8562910 2.彻底了解mapreduce核心Shuffl ...

  4. OpenAL

    http://blog.csdn.net/luckilyyu/article/details/6894707

  5. Unity之GUI控件

    在这里就贴一个连接吧:GUI

  6. Windows中进程的内存结构

    基础知识: 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表.允许插入或删除操作的一端称为栈顶,另一端称为栈底,对栈的插入和删除操作被称为入栈和出栈. 有一组CPU指令可以实现对进程 ...

  7. gulp配置版本号 教程之gulp-rev-append

    简介: 使用gulp-rev-append给页面的引用添加版本号,清除页面引用缓存. 1.安装nodejs/全局安装gulp/项目安装gulp/创建package.json和gulpfile.js文件 ...

  8. html5 Canvas处理图像 实例讲解

    最近在学习canvas,canvas有很强大的图像处理功能,下面写一个我的学习总结: canvas常用功能: 1. 绘制矩形.圆形.曲线.组合图形 2. 绘制文本 3.绘制渐变.变形的图形 4. 图片 ...

  9. zrender源码分析1:总体结构

    开始 zrender(Zlevel Render) 是一个轻量级的Canvas类库,这里是GitHub的网址 点我, 类似的类库有Kinetic.JS.EaselJS. 但貌似都没有zrender好用 ...

  10. View的工作原理

    一.认识ViewRoot和DecorView 当Activity对象被创建的时候,会将DecorView添加到Window中,同时创建ViewRootImpl对象(ViewRoot对应于ViewRoo ...