Makefile 例子

该Makefile支持安静编译,交叉编译,增加调试信息等选项,支持自动对头文件的依赖。

 

Makefile:

 

PROG=gdbtest

#replace .c to .o of all source file and list here
#condition include like obj-$(CONFIG_XXX)+= xxx.o
obj-y=main.o

 

DST_DIR=/tftpboot

#host compile or cross compile
ifeq ($(HOST),y)
CROSS_COMPILE=
else
CROSS_COMPILE=mipsel-linux-
endif

CC=$(CROSS_COMPILE)gcc
STRIP=$(CROSS_COMPILE)strip

RM=rm -rf
CP=cp -f

CFLAGS=-Wall -Werror -pipe

#with or without debug info
ifeq ($(CONFIG_DEBUG),y)
CFLAGS+=-g3 -ggdb
else
CFLAGS+=-Os
endif

LDFLAGS=

#Quiet compile or not
ifeq ($(V),1)
Q=
else
Q=@
endif

all: $(PROG)

$(PROG):$(obj-y)
        @$(if $Q, echo "LD      $@")
        $(Q)$(CC) $(LDFLAGS) -o $@ $^

%.d: %.c
        @$(if $Q, echo "CHK     $<")
        $(Q)$(CC) -M $(CFLAGS) $< > $@.$$$$; /
        sed 's,/($*/)/.o[ :]*,/1.o $@ : ,g' < $@.$$$$ > $@; /
        $(RM) $@.$$$$

%.o: %.c
        @$(if $Q, echo "CC      $@")
        $(Q)$(CC) $(CFLAGS) -c -o $@ $<

clean:
        @$(if $Q, echo "CLEAN   $(PROG)")
        $(Q)$(RM) *.o *.d $(PROG)

install:$(PROG)
        @$(if $Q, echo "INST    $(PROG)")
        $(Q)$(CP) $(PROG) $(DST_DIR)/
        $(Q)$(STRIP)  $(DST_DIR)/$(PROG)

uninstall:
        @$(if $Q, echo "UNINST  $(PROG)")
        $(Q)$(RM) $(DST_DIR)/$(PROG)

sinclude $(obj-y:.o=.d)

 

 

 

 

源文件:

main.c

 

编译后的文件:gdbtest

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值