社区
C++ 语言
帖子详情
makefile文件中的这句代表什么意思?
papaofdoudou
人工智能领域新星创作者
博客专家认证
2010-04-29 09:53:59
OBJS = ${ASMS:.S=.o} ${SRCS:.c=.o}
其中
ASMS=
SRCS定义为一个.c文件
我看到makefile文件中没有任何gcc的编译命令如何生成 .o文件呢
...全文
296
8
打赏
收藏
makefile文件中的这句代表什么意思?
OBJS = ${ASMS:.S=.o} ${SRCS:.c=.o} 其中 ASMS= SRCS定义为一个.c文件 我看到makefile文件中没有任何gcc的编译命令如何生成 .o文件呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tomsheep
2010-04-29
打赏
举报
回复
[Quote=引用 2 楼 tugouxp 的回复:]
引用 1 楼 lianshaohua 的回复:
是把.S后缀改为.o后缀,然后放到OBJS变量中;
把.c后缀改为.o后缀,然后放到OBJS变量中;
:::
根据你所输入的源文件名进行替换,从而编译成相应文件名的.o文件,
但是没有编译指令gcc等,却能编译出.o文件,怎么理解?
[/Quote]
因为这是makefile的隐含规则
在所有的规则中,并没有这.o目标文件的生成规则,因此使用默认的目标%.o:%c中的规则生成。
当然你可以制定自己的规则,比如:
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
ypb362148418
2010-04-29
打赏
举报
回复
在你使用Gcc编译的时候,这些语句就起作用了,支持下1L
papaofdoudou
2010-04-29
打赏
举报
回复
[Quote=引用 1 楼 lianshaohua 的回复:]
是把.S后缀改为.o后缀,然后放到OBJS变量中;
把.c后缀改为.o后缀,然后放到OBJS变量中;
:::
根据你所输入的源文件名进行替换,从而编译成相应文件名的.o文件,
[/Quote]
但是没有编译指令gcc等,却能编译出.o文件,怎么理解?
ztenv
版主
2010-04-29
打赏
举报
回复
是把.S后缀改为.o后缀,然后放到OBJS变量中;
把.c后缀改为.o后缀,然后放到OBJS变量中;
:::
根据你所输入的源文件名进行替换,从而编译成相应文件名的.o文件,
tomsheep
2010-04-29
打赏
举报
回复
[Quote=引用 6 楼 tugouxp 的回复:]
语句中的$(CC) -c $(CFLAGS) $< -o $@时什么意思?跟我的有些类似。
[/Quote]
CC是自己定义的编译器,比如CC = gcc
-c 是gcc 的编译选项, 表示编译为.o文件
CFLAGS是编译参数 比如可以自定义CFLAGS = -O2 -Wall
$< 代表本条规则A:B的B部分(本例%.o:%.c中就是后缀为.c的文件的一个匹配)
-o是gcc编译选项,后跟输出文件名,
$@就是A部分,本例就是"文件名.o"
LZ可以照本oreilly出版社的Managing Projects with GNU Make,备做工具书
需要的时候翻看
ztenv
版主
2010-04-29
打赏
举报
回复
$(CC) -c $(CFLAGS) $< -o $@
$(CC)一般就是根据后缀名定义的编译器比如:
.cpp的把CC定义为g++
.c 的把CC定义为gcc
....
$(CFLAGS)
定义的编译选项,这个需要了解g++ 的参数去;
$< -o $@
这讲起来就比较复杂了。。。
papaofdoudou
2010-04-29
打赏
举报
回复
[Quote=引用 4 楼 tomsheep 的回复:]
引用 2 楼 tugouxp 的回复:
引用 1 楼 lianshaohua 的回复:
是把.S后缀改为.o后缀,然后放到OBJS变量中;
把.c后缀改为.o后缀,然后放到OBJS变量中;
:::
根据你所输入的源文件名进行替换,从而编译成相应文件名的.o文件,
但是没有编译指令gcc等,却能编译出.o文件,怎么理解?
因为这是makefile的隐含规则
在所有的规……
[/Quote]
语句中的$(CC) -c $(CFLAGS) $< -o $@时什么意思?跟我的有些类似。
ztenv
版主
2010-04-29
打赏
举报
回复
[Quote=引用 2 楼 tugouxp 的回复:]
引用 1 楼 lianshaohua 的回复:
是把.S后缀改为.o后缀,然后放到OBJS变量中;
把.c后缀改为.o后缀,然后放到OBJS变量中;
:::
根据你所输入的源文件名进行替换,从而编译成相应文件名的.o文件,
但是没有编译指令gcc等,却能编译出.o文件,怎么理解?
[/Quote]
不可能没有gcc或g++的,或许不在你这个makefile文件中,你的文件肯定包含(include)了其它的makefile
Makefile
中
=,:=,?= 的含义
最近学习
Makefile
,复习一下以前学过的知识,参考<跟我一起学
Makefile
>
中
第七部分:使用变量 ... 1.
Makefile
中
=,:=,?=的含义 ...也就是说,变量的值将会是整个
makefile
中
最后被指...
如何编写一个
Makefile
文件
(手把手的教你)
二、实战代码演示与讲解1 没有
makefile
的项目是怎么创建运行的1.1 创建
文件
1.2 ...
makefile
文件
2.4 查看目录并运行可执行
文件
三、代码优化3.1 添加clean信息3.2 简化
makefile
信息3.2.1 简化第一版3.2.2 简化第二版3.
Makefile
中
的一些符号介绍
1.
Makefile
中
:=,=,?=和+= “=”是最普通的等号,在
Makefile
中
也是最容易搞错的赋值等号,使用“=”进行赋值,变量的值是整个
makefile
中
最后被指定的值。 举例如下: x = A y = $(x) B x = AA 经过上面的赋值...
Makefile
中
:=, =, ?=和+=的含义
在
Makefile
语法
中
,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等 那么这些赋值等号分别表示什么含义呢? 1. “=” “=”是最普通的等号,然而在
Makefile
中
确实最容易搞错的赋值...
Makefile
文件
是什么?
初次接触
Makefile
还是在跟朋友一起写 Go 项目的时候,他给我们介绍的,第一感觉听说,感觉挺好用,作为一个码农,对于未知的技术,应该保持好奇心
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章