linux里面线程编译运行问题

今天老师讲了多线程编程写了一个很简单的创建线程C程序,然后就编译。C文件名为threadcreatetest.c格式是#gcc-Wall-lpthreadthreadcr... 今天老师讲了多线程编程写了一个很简单的创建线程C程序,然后就编译。C文件名为threadcreatetest.c
格式是#gcc -Wall-lpthread threadcreatetest.c
我就是想问问和编译C里面有什么区别?#gcc a.c -o a这个前面gcc是编译,a.c是源文件名,a是目标文件名,然后运行时./a但是多线程里面是怎么的呢?我看不懂 -Wall后然运行怎么又是/a.out 呢?有点搞不懂了。。。希望高手说详细点,刚学。。。
threadcreatetest.c源文件为
#include<pthread.h>
#include<stdio.h>
void *create(void *arg)
{
printf("new thread created ......");

}
int main(int argc,char *argv[]){
pthread_t tidp;
int error;
error=pthread_create(&tidp,NULL,create,NULL);
if(error!=0){
printf("pthred_create is not created...");
return -1;

}
printf("pthread_create is created.....");
return 0;

}最上面这个create函数什么意思?主函数里面调用了的?我看貌似没调用哇。。后面if语句能看懂,就是不懂怎么传参的,全局变量在2个线程里各自享有存储空间也知道,也就是全局变量,他们分别可以修改但互不影响
展开
 我来答
帮圣锅你悟阳1
推荐于2017-11-24 · TA获得超过143个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:110万
展开全部
gcc xxx.c -lpthread 其中的-l是指包含的lib库,具体写法可以man gcc看下
多线程函数除了要包含头文件pthread.h外还必须要包含lib库pthread
pthread_create是创建线程,但具体的线程里面做什么事是在void *create(void *arg)里,这个函数名是自己任意区的,但返回值和参数一般都是void*类型,因为pthread_create函数的定义就是这样
int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);

参考资料: http://baike.baidu.com/view/1797052.htm

chenjintao_ii
2011-11-22 · TA获得超过425个赞
知道小有建树答主
回答量:505
采纳率:100%
帮助的人:329万
展开全部
#gcc a.c -o a #此句的-o a说明输出目标文件为“a”;
#gcc -Wall-lpthread threadcreatetest.c #此句未注明输出目标文件名,系统默认输出为a.out,所以编译之后执行./a.out文件。
如果上句也没有指明“ -o a ”的话,输出也是a.out,你可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a67729519
2011-11-22 · TA获得超过893个赞
知道小有建树答主
回答量:1290
采纳率:0%
帮助的人:799万
展开全部
-Wall是打开warning的意思,理解为Warnings All.
还想问啥,貌似你问的有点混乱,看不懂
追问
就是还有下面的,我们同学今天编译就直接gcc xxx.c -lpthread,,也可以编译,后然./a.out也可运行,今天刚上第一节课,不好意思啊,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式