Makefile代码解释

一、Makefile文件

CC = arm-linux-gcc

TARGET  = show_jpeg
CONFIG  = -Wall -O2
SRCS  	= show_jpeg.c
IFLAGS  = -I./libjpeg/include
LFLAGS  = -L./libjpeg/lib
LFLAGS  += -ljpeg

OBJS = $(patsubst %.c, %.o, $(SRCS))

$(TARGET):$(OBJS)
	$(CC) $^ -o $@ $(IFLAGS) $(LFLAGS) $(CONFIG)
	@echo "success:======$(CC) compilation OK===Done==="	
	
%.o:%.c
	$(CC) -c $< -o $@ $(IFLAGS) $(LFLAGS) $(CONFIG)

.PHONY: clean
clean:
	$(RM) $(TARGET)
	$(RM) $(TARGET_AR)
	$(RM) $(OBJS)

二、每行代码注解

CC=arm-linux-gcc
系统默认为普通编译工具gcc,需移植裸机运行时,需修改为交叉编译工具arm-linux-gcc,故需要修改CC的变量;

TARGET = show_jpeg
此变量保存生成的目标文件名称;

CONFIG = Wall -O2
打开所有的警告,并设置优先等级为2,优先级越高,编译速度越慢,相对而言程序运行速度越快,调试难度越大。

SRCS = show_jpeg.c
保存含main函数的.c文件;

IFLAGS = -I./libjpeg/include
保存指定头文件的的路径(Makefile当前目录下的libjpeg文件夹的include文件夹下的头文件);

LFLAGS = -L./libjpeg/lib
保存指定库文件的路径(./libjpeg/lib);

LFLAGS += -ljpeg
添加库名;

OBJS = $(patsubst %.c, %.o, $(SRCS))
把所有的.c后缀文件替换为.o后缀文件,保存的是.o文件

*$ (TARGET): $(OBJS)
$(CC) $^ -o $@ $(IFLAGS) $(LFLAGS) $(CONFIG)
@echo “success:====== $ (CC) compilation OK====Done=”
***
链接库文件和依赖文件编译生成目标文件,并打印succeed信息到终端,等同于(arm-linux-gcc *.o -o show_jpeg -I./libjpeg/include -L./libjpeg/lib -ljpeg Wall -O2)

%.o:%.c
$(CC) -c $< -o $@ $(IFLAGS) $(LFLAGS) $(CONFIG)

把所有.c文件编程成.o文件(arm-linux-gcc *.c -o *.o -I./libjpeg/include -L./libjpeg/lib -ljpeg Wall -O2)

.PHONY: clean
clean:
$(RM) $(TARGET)
$(RM) $(TARGET_AR)
$(RM) $(OBJS)

.PHONY告诉Makefile不要对clean运用任何隐形规则,需要make clean 才能对删除目标文件和.o文件, $ (RM)相当于rm命令

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小鹿

博主不差钱,点个赞就行哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值