gcc编译线程程序,为什么要加-lpthread,头文件已经包含了<pthread.h>了啊
展开全部
-lpthread是链接库,
<pthread.h>只有申明,实现部分都在库里面。
创建线程时一般是把函数的指针做参数,所以要加一个取地址符号。
ret=pthread_create(&id,NULL,(void *)&thread,NULL);
另外,建议要检查一下创建线程的返回值ret是否成功,防止影响后面的代码。
扩展资料:
每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。
编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。
参考资料来源:百度百科-gcc
展开全部
编译程序包括 预编译, 编译,汇编,链接
包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库
包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库
追问
谢谢。那其它的呢?很多比如 。还有很多,都不要加,难道就比较特别???
追答
其他的可能包含在默认链接的库中,如libc, 其他不清楚,很少写linux代码,忘的差不多了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大部分函数包含头文件编译时不用链接库是因为你调用的函数就写在头文件中,打开头文件可以看到函数原码;而需要链接库是因为你调用的函数没有写在头文件中,函数是被封装起来的看不了原函数是怎样写的,必须链接库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询