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.c
mv uart.o /work/zmOS/out/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值