gcc -pthread 与 -lpthread
来源:互联网 发布:清华软件学院 专硕 编辑:程序博客网 时间:2024/04/30 02:39
一般情况下,我们在链接一个(文件名为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,则会实现为每线程独有,从而避免线程竞争错误。
0 0
- gcc -pthread 与 -lpthread
- gcc -lpthread和gcc -pthread的区别
- gcc -lpthread和gcc -pthread的区别
- gcc -lpthread和gcc -pthread的区别
- 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中-pthread和-lpthread的区别
- gcc hello.c -lpthread
- 双宾语动词的被动语态
- Unity3D中三种调用其他脚本函数的方法
- jQuery.index()
- Atitit usrQBM1603短信验证码规范
- COOKIE和鼠标滚轮
- gcc -pthread 与 -lpthread
- 第十三周 项目1 -验证算法 --验证最小生成树的普里姆算法
- 欢迎使用CSDN-markdown编辑器
- 关于C++ const 的全面总结
- nefuoj 8 二倍
- Mock以及Mockito的使用
- Target runtime com.genuitec.runtime.generic.jee60 is not def——已解决
- 从头开始学习yii2---5.完善注册接口
- VC/MFC获取编辑框的值的几种方法