Makefile代码解释
Makefile文件代码详解
- 一、Makefile文件
- 二、每行代码注解
一、Makefile文件
CC = arm-linux-gccTARGET = show_jpeg
CONFIG = -Wall -O2
SRCS = show_jpeg.c
IFLAGS = -I./libjpeg/include
LFLAGS = -L./libjpeg/lib
LFLAGS += -ljpegOBJS = $(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命令
Makefile代码解释相关推荐
- makefile文件解释
makefile文件解释 makefile文件 详细解释 makefile文件 CC = g++PROGRAM = ubuntuopenglSRC = $(wildcard ./*.cpp)OBJEC ...
- ViSP中识别AprilTag的C++实例代码解释
VISP中识别AprilTag的C++实例代码解释 接着上一篇: VISP中识别AprilTag的C++实例代码与运行结果 先展示代码,一句一句解释吧 #include <visp3/detec ...
- 最小操作系统的代码解释、NASM的初步使用
一.最小操作系统的代码解释 很多资料上都有最小操作系统代码,即从裸机开始运行.引导机器.显示 hello world 并进入循环等待的代码:下面对代码进行一下大体的解释: org 07c00h; 告诉 ...
- ML之sklearn:sklearn的make_pipeline函数、RobustScaler函数、KFold函数、cross_val_score函数的代码解释、使用方法之详细攻略
ML之sklearn:sklearn的make_pipeline函数.RobustScaler函数.KFold函数.cross_val_score函数的代码解释.使用方法之详细攻略 目录 sklear ...
- OpenCV用代码解释单应性的基本概念
OpenCV用代码解释单应性的基本概念 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? 单应变换如何有用? 示范代码 从共面点估计姿势 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? ...
- 基于vue2.0实现音乐/视频播放进度条组件的思路及具体实现方法+代码解释
基于vue2.0实现音乐/视频播放进度条组件的方法及代码解释 需求分析: ①:进度条随着歌曲的播放延长,歌曲播放完时长度等于黑色总进度条长度:时间实时更新. ②:当滑动按钮时,实时更新播放时间,橙色进 ...
- Makefile 中$@ $^ $ 解释
Makefile 中$@ $^ $< 解释 给个例子你分析一下(来自国内开源项目g-bios) g-bios/app/net/Makefile ------------------------ ...
- 【Python笔记】列表基础操作 :创建,增加、删除、查询。附加:练习题。用简单代码解释。
Python:列表基础操作 创建,增加.删除.查询.附加练习题.用简单代码解释. 目录 Python:列表基础操作 演示环境 第一部分:列表(list) 1. 创建空列表 2. 创建只有默认值的列表 ...
- Jena学习三——代码解释
代码解释 可以直接官网学习http://jena.apache.org/tutorials/rdf_api.html#ch-Jena%20RDF%20Packages Tutorial01 packa ...
- 播放失败246106异常代码_美的燃气热水器修理分享(附代码解释)
上门检修一台美的强排热水器. 试机检查:打开水流,强排风机虽转,未听到燃气电磁阀吸合和燃气火力声音,出水口也只有冷水流出,几秒后显示E2.查相应的代码解释E2:风压异常或风机故障.但观风机运行速度声音 ...
最新文章
- CUDA+OpenCV实现光线追踪(有无constant)
- 如何估算代码量_如何估算焊锡膏的印刷量?
- 【mybatis】IF判断的坑 (实现if test= status == 'zhangsan')
- ubuntu 16.04 安装MXNet GPU版本
- 如何查看文件夹里有几张图片_如何把几张图片合成一个pdf?图片合并为pdf的操作教程...
- python将数据集分成训练样本和类标签
- 电脑很卡~~~~为什么???
- shell命令locate
- python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
- 【POJ1958】【典型递推问题】汉诺塔问题
- 【Java】Servlet完全自学手册
- awflasher的Vplayer 2.1 ( FLV Player )
- 计算机网络状态机,计算机网络之七:TCP协议(1)
- CSS图片底部留白的解决办法
- Java显示棋盘_Java的GUI学习:显示国际棋盘
- EXCEL组合功能函数和VBA汇总
- python nodejs开发web_用nodejs和python实现一个爬虫来爬网站(智联招聘)的信息
- 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第四节-民族丧失二十年的光阴
- YDOOK: STM32: 波特率的定义 波特率计算 波特率是什么?
- 谷歌不支持调用摄像头麦克风_谷歌大手一挥,第三方相机或已无立锥之地
热门文章
- 路由器和计算机的功能有何不同,网关和路由器的区别是什么 两者又有什么不同...
- 计算机显卡更新,电脑显卡怎么升级,电脑显卡升级方法图解
- Cassandra在海量数据存储及大型项目案例介绍-part1
- 编程将数字“翻译”成英文。例35706“翻译”成three-five-seven-zero-six。
- C++ IO流学习笔记
- cogs 259. 亲戚
- Learn Git Branching 答案
- 2022-2028全球沉浸式投影行业调研及趋势分析报告
- 屏幕距离和坐便转换工具_视频分辨率转换器(mp4视频分辨率转换器)V2.0.1 官方版...
- 面向功利编程,面向Star开源? 一个开发者的2019反思总结