免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1910 | 回复: 9
打印 上一主题 下一主题

[学习分享] makefile问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-09 10:40 |只看该作者 |倒序浏览
刚学makefile 有很多不懂,望各位大侠赐教!

work.o : work.c
            $(CC) $(CFLAGS) -c work.c -o work.o


work.o : work.c
            $(CC) $(CFLAGS) -c work.c

有什么区别的?为什么上面一个要加上-o work.o?


work : work.o
         cc -o work work.o

work : work.o
         cc work.o -o work
又有什么样的区别呢?正常的 -o FILE   是指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,缺省文件名是a.out.
但是上面的cc -o work work.o 为什么还要加上work.o呢?

论坛徽章:
0
2 [报告]
发表于 2012-11-09 10:49 |只看该作者
求makefile高手啊

论坛徽章:
0
3 [报告]
发表于 2012-11-09 13:19 来自手机 |只看该作者
你有很多问号。建议去看看 跟我一起写makefile

论坛徽章:
0
4 [报告]
发表于 2012-11-09 18:32 |只看该作者
这个不是makefile的问题,是gcc的使用吧。

论坛徽章:
0
5 [报告]
发表于 2012-11-11 19:57 |只看该作者
这是gcc的参数问题。
gcc -o 这个o 是output。
如果是gcc abc.c -Wall -gdb -o abc(也可以写成gcc -Wall -gdb -o abc abc.c)
得到的是最后的可执行文件abc
但这个可执行文件不是一次到位得到的。中间经过了多次步骤。详细步骤如下:
gcc -E abc.c -o abc.i(预处理)
gcc -S abc.i -o abc.S(编译)
gcc -C abc.S -o abc.o(汇编)
gcc abc.o -o abc(连接)
so......

论坛徽章:
0
6 [报告]
发表于 2012-11-11 22:02 |只看该作者
本帖最后由 dhc5251 于 2012-11-17 17:08 编辑

1、
有什么区别的?为什么上面一个要加上-o work.o?

  -o work.o是多余的,-c默认就是从.c生成对应的.o,不必指定-o选项,如果一定要指定,那么指定的输出文件名最好为对应的.o

2、
又有什么样的区别呢?正常的 -o FILE   是指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,缺省文件名是a.out.
但是上面的cc -o work work.o 为什么还要加上work.o呢?

  你可能要先了解下编译(这里的术语编译是泛指,后面的用到该词是特指将.c文件翻译为.o文件/机器指令)的几个阶段(预处理、编译、链接),上面那步是通过.c输出.o,仅编译,未链接。“cc work.o -o work”,将编译生成的目标文件链接为可执行文件,这时需要指定可执行文件的名字,默认为a.out。

论坛徽章:
0
7 [报告]
发表于 2012-11-12 09:56 |只看该作者
你今天提出的问题,昨天我偶尔在一本参考书上提到过,所以现在才明白你的问题。

论坛徽章:
0
8 [报告]
发表于 2012-11-12 21:19 |只看该作者
好吧,楼主主要是分不清-c -o 吧 -c 生成.o的文件,-o 生成.a的文件,就酱紫吧!

楼主可以看一下man cc

gun make 这书如果想了解make 也可以看看。

论坛徽章:
0
9 [报告]
发表于 2012-11-14 16:51 |只看该作者
回复 5# hstking
太好了,讲的很详细,我现在也弄清楚了,谢谢了

   

论坛徽章:
0
10 [报告]
发表于 2012-11-14 16:52 |只看该作者
回复 6# dhc5251
感谢!

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP