- 论坛徽章:
- 0
|
标题可能描述的不清楚,不知道该怎么表达
比如, 我有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熟悉的能指点一下 |
|