Linux_linux常用工具之make/makefile详解
make/makefile
make/makefile: 项目自动化构建工具
makefile:普通文本文件,记录了项目的构建流程规则。
make: 一个解释程序,到当前执行make命令的目录下寻找makefile文件,并且对makefile 中记录的项目构建规则进行解释执行。
makefile: 编写规则
目标对象:依赖对象[tab]命令操作
Make执行规则
解释执行时,在makefile中寻找目标对象(只寻找第一个目标对象),找到目标对象后,执行命令操作
生成两个程序
但是只生成一个
如果有目标对象,判断对象是否存在?:
如果目标对象不存在:执行命令操作—生成目标对象
如果目标对象已存在: 判断是否有依赖对象?
没有依赖对象:直接报错(目标最新)-不需要重新生成
如果有依赖对象:判断依赖对象是否存在?
依赖对象存在:通过目标对象和依赖对象大的最后一次修改时间判断是否需要重新生成目标对象
依赖对象不存在:make继续在makefile中寻找依赖对象的生成规则,先生成依赖对象,进而生成目标对象
预定义变量
预定义变量:
$@:目标对象$^:所有依赖对象$<:依赖对象的第一个
%通配符
不用手动添加每一个目标对象生成规则
(wildcard 目录名) 获取当前目录
(patsusbst 目录名 ,目录名,变量) 字符串替换
**尾对象:目标对象每次都需要重新执行(不管是否存在,是否更新)
声明尾对象:.PHONY**
Linux_linux常用工具之make/makefile详解相关推荐
- 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- Makefile详解(自己觉得重新看一次学了好多东西,红色字)
Makefile详解 跟我一起写 Makefile 陈皓 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得 ...
- Linux 内核顶层 Makefile 详解
Linux 内核获取 Linux 由 Linux 基金会管理与发布, Linux 官网为 https://www.kernel.org,所以你想获取最新的 Linux 版本就可以在这个网站上下载 最新 ...
- linux内核顶层Makefile详解
文章目录 一.linux内核获取 二.linux内核初次编译 三.linux工程目录分析 1.获取源码 2.目录介绍 1.总体浏览 2.arch 目录 3.block 目录 4.crypto 目录 5 ...
- mysql查询性能测试工具_MySQL性能测试工具MySQLslap使用实例详解
原标题:MySQL性能测试工具MySQLslap使用实例详解 MySQLslap是MySQL(了解干货请戳:干货!超过500行的Mysql学习笔记)自带的基准测试工具,优点:查询数据,语法简单,灵活容 ...
- Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解
环境部署及工具使用 系列文章 前言 环境部署 硬件环境 软件环境 ADB工具 adb组成 adb命令 android命令 sdkmanager 命令 avdmanager命令 管理模拟器 monito ...
- 【正点原子Linux连载】第三十一章 U-Boot顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- U-Boot 顶层 Makefile 详解
U-Boot 顶层 Makefile 详解 1.U-Boot 工程目录分析 我们在分析 uboot 源码之前一定要 先在 Ubuntu 中编译一下 uboot 源码,因为编译过程会生成一些文件,而生成 ...
- python 自动化办公 案例_python自动化工具之pywinauto实例详解
python自动化工具之pywinauto实例详解 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python自动化工具之pywinauto实例详解.txt ] (友情提示: ...
最新文章
- 文件流下载到本地 - 待完成
- Python技巧-只用一行代码轻松实现图片文本识别
- 批量kill掉linux中符合某些字段的进程
- vim语法高亮的错误解决办法
- 当AR落地B端行业应用,它的无限可能在哪?
- 使用openSSL构造一个支持https的nodejs服务器
- 剖析大数据平台的数据采集
- java bouncycastle_java – 使用bouncycastle进行签名和验证签名的正确方法
- 冒烟指数:大数据监测互联网金融风险
- 如何进行用户行为分析并提高用户粘性
- macOS苹果电脑下载m3u8、ts视频
- 南师大计算机系,清华大学2010计算机系本科录取名单(南京仅1人考上)
- 基于java的小型超市管理系统系统(含源文件)
- 书海觅珍 遨游古今——广西国正书吧正式运营开业
- 只安装XCode’s Command line tools不安装XCode
- 自行更换iPhone 6s 手机电池 | 工序步骤
- H3C 802.11n的频宽模式
- Python解炸金花问题
- splatter包生成单细胞RNA测序数据
- 究竟什么是CRM(客户关系管理系统)呢?
热门文章
- Java属性中指定Json的属性名称(序列化和反序列化)
- hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)
- 【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)
- 在一个字符串中找到第一个只出现一次的字符
- 关于ORA-04021解决办法(timeout occurred while waiting to lock object)
- Android中的广播Broadcast详解
- cocos2d-x游戏开发系列教程-中国象棋02-main函数和欢迎页面
- 神话人物的现代版简历
- C语言 按位或 正整数与负整数 之间
- php中mysqlstat函数,PHP函数mysql_stat介绍