免费注册 查看新帖 |

Chinaunix

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

makefile 问题, 如何对某一类型的文件采取同样操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-11 17:09 |只看该作者 |倒序浏览
标题可能描述的不清楚,不知道该怎么表达

比如, 我有3 个文件: error.o  foo.c bar.c
需要编译成foo, bar两个可执行文件, 依赖关系分别是
foo: foo.c error.o
bar:  bar.c error.o

foo 和 bar 都独立,没有任何相关性,
error.o 中有一个出错处理函数,比如wraperr(),在foo.c 和 bar.c 中都调用了该函数

如果用个比较简单的makefile,可以这么写:

PROGS = foo bar
all : ${PROGS}

foo: foo.o        
        gcc $< error.o -o $@
foo.o: foo.c
        gcc -c $<

bar: bar.o
        gcc $< error.o -o $@
bar.o: bar.c
        gcc -c $<



但是,现在有很多像foo bar这样的目标, 该怎么写:
如果这样写:
PROGS = foo bar
all : ${PROGS}

%: %.o
        gcc $< error.o -o $@
%.o: %.c
        gcc -c $<



make 时:
--------------------------------------------------------------
cc     foo.c   -o foo
/tmp/ccgRzkXg.o: In function `main':
foo.c:(.text+0x40): undefined reference to `wraperr'
collect2: ld returned 1 exit status
make: *** [foo] Error 1
--------------------------------------------------------------

希望有对make熟悉的能指点一下

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2008-09-11 23:05 |只看该作者

  1. PROGS = foo bar
  2. all : ${PROGS}

  3. ${PROGS}:%: %.o error.o
  4.         gcc $< error.o -o $@
  5. %.o: %.c
  6.         gcc -c $<
复制代码

评分

参与人数 1可用积分 +15 收起 理由
MMMIX + 15 useful

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2008-09-12 01:09 |只看该作者
原帖由 cjaizss 于 2008-9-11 23:05 发表

PROGS = foo bar
all : ${PROGS}

${PROGS}:%: %.o error.o
        gcc $< error.o -o $@
%.o: %.c
        gcc -c $<

多谢 cjaizss 的解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP