QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

热搜: eCos linux goAhead
搜索
发新帖

3

主题

0

听众

62

积分

初级工程师

Rank: 2Rank: 2

该用户从未签到

最后登录
2013-4-14
威望
0
金钱
50
贡献
0
注册时间
2013-4-5
积分
62
帖子
12
主题
3
精华
0
UID
251

[开发工具] ecos编译相关的疑问

发表于 3 天前 |显示全部楼层
更多
在工具生成的makefile中,只要有kernel,都应该在\kernel_build\kernel\current\中用一个makefile,有这么一句话:
$(LIBRARY).stamp: $(OBJECTS)
        $(AR) rcs $(PREFIX)/lib/$(@:.stamp=) $(foreach obj,$?,$(if $(obj:%.o=),$(dir $(obj))$(OBJECT_PREFIX)_$(notdir $(obj:.o.d=.o)),$(obj)))
        @cat $(foreach obj,$^,$(obj:.o=.o.d)) > $(@:.stamp=.deps)
        @touch $@
这个应该是将生成的.o文件加入到libtarget.a打包文件中,这里面$(@:.stamp=)这一句好像是说将libtarget.a.stamp用libtarget.a替换。但是关于$(@:.stamp=)的用法,在GNU的MAKEFILE手册中找不到相关的用法,关于@只有用在@echo,或$@,或$(@D)等用法。只能通过$@表示目标的值,那么@是表示目标变量这样才能说通。
版主,又要麻烦你跟我找一找啦
回复

使用道具 举报

43

主题

2

听众

503

积分

超级版主

Rank: 8Rank: 8Rank: 8Rank: 8

该用户从未签到

最后登录
2013-4-14
威望
0
金钱
423
贡献
0
注册时间
2012-5-1
积分
503
帖子
75
主题
43
精华
1
UID
2
发表于 前天 00:27 |显示全部楼层
在makefile中,像$@、$<等表示自动化变量,其中,$@:表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。
这个可以参考这个链接:http://wiki.ubuntu.org.cn/%E8%B7 ... 4.E5.8F.98.E9.87.8F

@echo,也就是在命令前加@表示执行makefile时,不输出这条语句,否则则会输出整条执行语句,这个很容易理解,或者自己写个非常简单的makefile感受下
回复

使用道具 举报

3

主题

0

听众

62

积分

初级工程师

Rank: 2Rank: 2

该用户从未签到

最后登录
2013-4-14
威望
0
金钱
50
贡献
0
注册时间
2013-4-5
积分
62
帖子
12
主题
3
精华
0
UID
251
发表于 前天 22:43 |显示全部楼层
你说的这几个用法,我都能理解,我是说像$(@:.stamp=)这个用法,我没见过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

无觅相关文章插件

申请友链|手机版|关于本站|eCos技术网 ( 粤ICP备12094833号-1 )   

GMT+8, 2013-4-14 13:51 , Processed in 0.065534 second(s), 33 queries .

Powered by Discuz!2.5 X2.5

© 2001-2012 Comsenz Inc.

回顶部