gcc编译线程程序,为啥要加-lpthread,头文件已经包含了<pthread.h>了啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc编译线程程序,为啥要加-lpthread,头文件已经包含了<pthread.h>了啊相关的知识,希望对你有一定的参考价值。
参考技术A-lpthread是链接库,
<pthread.h>只有申明,实现部分都在库里面。
创建线程时一般是把函数的指针做参数,所以要加一个取地址符号。
ret=pthread_create(&id,NULL,(void *)&thread,NULL);
另外,建议要检查一下创建线程的返回值ret是否成功,防止影响后面的代码。
扩展资料:
每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。
编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。
参考资料来源:百度百科-gcc
急!LINUX下,GCC编译,原程序包含<semaphore.h>头文件,为啥编译时说sem_wait,sem_post等未定义的引用
RT
编译时加上参数:-lpthread要看报错的阶段,是在编译还是链接阶段.
如果编译时函数没有找到,那是头文件的问题,如果链接时未定义引用,那是c库的问题.
如果你的头文件都正常包含了,那可能你的c库没有使能semaphore的支持.追问
怎么加参数??在哪加?gcc -o prohy producer.c 我原来这么写的。。
追答对
在最后加
加了还是那样。。这是什么原因?GCC版本不行??我用的ubuntu,然后直接用命令下载的gcc
追答gcc -pthread -c x.c
gcc x.o -ox -pthread
如果编译时函数没有找到,那是头文件的问题,如果链接时未定义引用,那是c库的问题.
如果你的头文件都正常包含了,那可能你的c库没有使能semaphore的支持.追问
我才接触LINUX,不是很清楚,就是在文本编辑器里写好了程序,然后在UBUNTU的终端输入gcc编译命令后,出现的提示
追答把错误贴出来瞄瞄
参考技术B 楼上说的对啊,如果是在编译阶段,可能是头文件路径不对。把你gcc编译语句和报错信息贴出来吧,这样大家好帮你~ 参考技术C gcc -o prohy -lpthread producer.c追问加了还是那样。。这是什么原因?GCC版本不行??我用的ubuntu,然后直接用命令下载的gcc
来自:求助得到的回答 参考技术C 贴代码呀 你这几句太含糊啦追问太长粘不了,麻烦直接跟我说下有哪几种原因会导致这种错误提示。除了头文件还有什么可能?sem_wait 是库函数,为什么会未定义?
追答这个 ……
超级大牛会确切回答你 我没办法 菜鸟一个
以上是关于gcc编译线程程序,为啥要加-lpthread,头文件已经包含了<pthread.h>了啊的主要内容,如果未能解决你的问题,请参考以下文章
gcc/clang编译带pthread.h头文件的源码时需要的参数
急!LINUX下,GCC编译,原程序包含<semaphore.h>头文件,为啥编译时说sem_wait,sem_post等未定义的引用