gcc中-pthread和-lpthread的区别
来源:互联网 发布:安兔兔验机网络不好 编辑:程序博客网 时间:2024/05/17 03:31
一般情况下,我们在链接一个(文件名为libxxx.so或libxxx.a等的)库时,会使用-lxxx的方式;在Linux中要用到多线程时,需要链接pthread库,按照惯例,我们应该使用-lpthread的方式来进行链接;但是,通过日常的观察,我发现很多开源代码都是使用了-pthread参数,而非使用-lpthread,这是为什么呢?
一通Google后,总算找到一些线索:
- 为了可移植性:在Linux中,pthread是作为一个单独的库存在的(libpthread.so),但是在其他Unix变种中却不一定,比如在FreeBSD中是没有单独的pthread库的,因此在FreeBSD中不能使用-lpthread来链接pthread,而使用-pthread则不会存在这个问题,因为FreeBSD的编译器能正确将-pthread展开为该系统下的依赖参数。同样道理,其他不同的变种也会有这样那样的区别,如果使用-lpthread,则可能在移植到其他Unix变种中时会出现问题,为了保持较高的可移植性,我们最好还是使用-pthread(尽管这种做法未被接纳成为C标准,但已基本是事实标准)。
- 添加额外的标志:在多数系统中,-pthread会被展开为“-D_REENTRANT -lpthread”,即是除了链接pthread库外,还先定义了宏_REENTRANT。定义这个宏的目的,是为了打开系统头文件中的各种多线程支持分支。比如,我们常常使用的错误码标志errno,如果没有定义_REENTRANT,则实现为一个全局变量;若是定义了_REENTRANT,则会实现为每线程独有,从而避免线程竞争错误。
转自: http://www.tuicool.com/articles/fAjIZv
阅读全文
0 0
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- gcc中-pthread和-lpthread的区别
- 【GCC】gcc中-pthread和-lpthread的区别
- gcc -lpthread和gcc -pthread的区别
- gcc -lpthread和gcc -pthread的区别
- gcc -lpthread和gcc -pthread的区别
- 多线程编程--gcc中-pthread和-lpthread的区别
- 转载_gcc -lpthread和gcc -pthread的区别
- g++的-pthread和-lpthread的区别
- 编译参数中-pthread以及-lpthread的区别
- WebView中给url添加cookie的值
- JEECMS源代码基本结构及相关技术简介
- Math.prototype.concat详解及二维数组扁平化方法
- ISO普及
- Spring AOP 完成日志记录
- gcc中-pthread和-lpthread的区别
- 设计模式之——原型设计模式
- 20:计算2的幂
- 配置mysql5.5主从复制数据库集群
- Spring+SpringMVC+Hibernate三大框架整合的SSH
- 老友记-第一季-第一集
- bootstrap select2插件用ajax来获取和显示数据
- word中插入上标快捷键
- PAT乙级1046. 划拳(15)