Makefile多⽂件编译错误总结
多⽂件⽬标编译错误总结:
在⼀个⽬录下有两个⽂件:hello.c uart.c,编译这两个⽂件,把编译⽣成的⽂件输出到out⽬录下:
Makefile脚本为:
include $(TOPDIR)/config.mk
CFLAGS= -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g
SRCS :=$(wildcard *.c)
OBJ    = $(patsubst %.c, %.o, $(wildcard *.c))
OBJS  = $(addprefix $(OUTOBJ)/,$(patsubst %.c,%.o,$(wildcard *.c)))
all:$(OBJS)
$(OBJS):$(SRCS)
$(CC) $(CFLAGS) -c -o $@ $(notdir $(patsubst %.o,%.c,$@))
clean:
rm -rf $(OBJS) $(OBJ)
.PHONY: all clean
#OBJ表⽰本⽬录下的⽬标⽂件
#OBJS表⽰把⽬标⽂件输出到out⽬录下:
all:$(OBJS)
$(OBJS):$(SRCS)
$(CC) $(CFLAGS) -c -o $@ $^
$^ 代表所有的依赖,
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o /work/zmOS/out/hello.o hello.c uart.c arm-linux-gcc: cannot specify -o with -c or -S with multiple files
make[2]: *** [/work/zmOS/out/hello.o] 错误 1
all:$(OBJS)
$(OBJS):$(SRCS)
$(CC) $(CFLAGS) -c -o $@ $<
依赖都是同⼀个 $<;代表众多依赖中的第⼀个
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o /work/zmOS/out/hello.o hello.c
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o /work/zmOS/out/uart.o hello.c display
/work/zmOS/out/hello.o /work/zmOS/out/uart.o
all:$(OBJS)
$(OBJS):$(SRCS)
$(CC) $(CFLAGS) -c -o $@ $(notdir $(patsubst %.o,%.c,$@))
这样可以正常编译通过,但是后⾯依赖真是有点⿇烦
make[2]: 正在进⼊⽬录 `/work/zmOS/drivers/uart'
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o /wo                                    rk/zmOS/out/hello.o hello.c
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o /wo                                    rk/zmOS/out/uart.o uart.c
display
/work/zmOS/out/hello.o /work/zmOS/out/uart.o
make[2]:正在离开⽬录 `/work/zmOS/drivers/uart'
#OBJ表⽰本⽬录下的⽬标⽂件
all:$(OBJ)
%.o:%.c
@echo "$@,$<"
${CC} $(CFLAGS) -c -o $@ $<
mv $@ $(OUTOBJ)/
⽬标⽂件和依赖⽂件只能在同⼀⽬录,否则报错,不到⽬标⽂件
hello.o,hello.c
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o hello.o hello.c
mv hello.o /work/zmOS/out/
uart.o,uart.c
arm-linux-gcc -c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -pipe -g -c -o uart.o uart.cmakefile phony
mv uart.o /work/zmOS/out/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。