Makefile的基本用法

2023-11-07

1.Makefile的基本概念:

目标:目标顶格写,后面是冒号(冒号后面是依赖)
依赖:依赖是用来产生目标的原材料。
命令:命令前面一定是Tab,不能是顶格,也不能说多个空格。命令就是要生成那个目标需要做的动作。

2.示例代码:

led.bin: start.o 
	arm-linux-ld -Ttext 0x0 -o led.elf $^	//设置连接地址为0x0,在linux系统中.elf文件是可执行文件
	arm-linux-objcopy -O binary led.elf led.bin	//把可执行文件变成可烧写文件
	arm-linux-objdump -D led.elf > led_elf.dis	//把可执行文件反汇编
	gcc mkv210_image.c -o mkx210	//编译mkv210_image.c
	./mkx210 led.bin 210.bin	//用led.bin(USB烧写)生成210.bin(SD烧写),SD烧写要添加开头16字节的校验信息,这是S5PV210芯片特有的,详细信息参考芯片的启动过程。
	
%.o : %.S
	arm-linux-gcc -o $@ $< -c	//把.S文件都编译得到.o文件

%.o : %.c
	arm-linux-gcc -o $@ $< -c 	//把.c文件都编译成.o文件(-c是只编译不链接)

clean:
	rm *.o *.elf *.bin *.dis mkx210 -f

3.调用方法:

3.1.make:没有指明目标,默认执行第一个目标(led.bin)下的语句。

3.2.make clean:得到clean这个目标,删除指定后缀的文件。

4.Makefile的自动变量

4.1.什么是自动变量

自动变量的含义:Makefile中预定义的特殊意义的符号。就类似于C语言编译器中预制的那些宏__FILE__一样。在有些情况下文件集合中文件非常多,描述的时候很麻烦,所以我们Makefile就用一些特殊的符号来替代符合某种条件的文件集,这就形成了自动变量。

4.2.常见的自动变量

(1)."$@": 规则的目标文件名;
(2)."$<" : 规则的依赖文件名,在规则中表示所有依赖的文件名,在其他地方只表示第一个依赖的文件名;
(3)."$^": 依赖的文件集合;

5.Makefile中使用通配符

(1)* :匹配若干个任意字符;
(2)? : 匹配1个任意字符;
(3)[ ] : 将[ ]中的字符依次去和外面的结合匹配;
(4)% :只在规则中使用,和*的作用一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Makefile的基本用法 的相关文章

随机推荐

  • SpringBoot笔记

    目录 开发准备 导出 常用注解 导出excel到指定位置 导出excel到指定web 导入 将指定位置Excel导入并显示至web 使用ExcelWriter基于模板导出 开发准备 1 导入依赖
  • Bar函数--Matplotlib

    函数Bar 用于绘制柱状图 使用bar绘制柱状图的过程中涉及到中文字体的显示问题 使用动态参数配置方法 指定了中文黑体 import matplotlib as mpl mpl rcParams font sans serif SimHei
  • web端播放m3u8视频流注意事项

    项目上有一个播放实时视频 直播 的需求 后端童鞋直接传过来一个类似 https live m3u8的视频流地址 让我自行播放 拿到地址的我一脸懵逼 下面开始我的探索 baidu 之路 HLS HTTP Live Streaming 介绍 m
  • Meta发布「分割一切」AI 模型,CV或迎来GPT-3时刻

    demo地址 Segment Anything Meta AI Meta 表示 这是第一个致力于图像分割的基础模型 自此 CV 也走上了 做一个统一某个 某些 全部 任务的全能模型 的道路 在此之前 分割作为计算机视觉的核心任务 已经得到广
  • java属性值注解

    查询条件开始时间 DateTimeFormat pattern yyyy MM dd HH mm ss JsonFormat pattern yyyy MM dd HH mm ss timezone GMT 8 private Date t
  • C# VS2010 Winform 查找链表的近邻值

    实现在类似数组中查找最接近目标值的数值 定义链表 定义链表 private List
  • 架构师进阶之路

    选择的范围太广 可以读的书太多 往往容易无所适从 我想就我自己读过的技术书籍中挑选出来一些 按照学习的先后顺序 推荐给大家 特别是那些想不断提高自己技术水平的Java程序员们 一 Java编程入门类 对于没有Java编程经验的程序员要入门
  • 随机森林建模

    在看datacastle的建模大赛 用r写了随机森林的二分类 上次代码用py跑的 这里想用交叉验证 但是跑了一天一夜也木有出来 还是把代码先保留下来吧 希望看到的人指正 rm list ls setwd D competitions dat
  • Android获取本地相册中图片视频

    权限
  • Linux多进程:exit——进程退出函数

    子进程结束释放自己的用户区数据 内核区数据由其父进程回收释放 pcb fd 等 进程退出函数 void exit int status status 是进程退出时的一个状态信息 父进程在回收子进程资源时可以获取 include
  • 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。

    这个是一个比较坑的题 但也是一个极其能查缺补漏的题 题目描述 求Sn 1 2 3 4 5 n 之值 其中n是一个数字 n不超过20 输入 n 输出 Sn的值 样例输入 5 样例输出 153 在这里插入代码片 乍一看很简单 一下就打好了 但开
  • C++ 结构体转json

    FdogSerialize FdogSerialize是一个用于C 序列化的开源库 采用非入侵方式 无需在原有结构体上进行修改 目前支持基础类型 基础类型数组 结构体 以及vector list map等数据类型的序列化 支持JSON和XM
  • SHA-256算法实现

    SHA 256 算法输入报文的最大长度不超过2 64 bit 输入按512 bit 分组进行处理 产生 的输出是一个256 bit 的报文摘要 该算法处理包括以下几步 STEP1 附加填充比特 对报文进行填充使报文长度与448 模512 同
  • JSR303校验的全局错误处理

    实现一个全局处理类 并对异常进行判断处理 方法有如下几种 1 实现HandlerExceptionResolver接口 实现其中的resolveException 方法 public class GlobalExceptionResolve
  • 自上而下的企业级数据分析应用 更好地满足业务部门需求

    2016年5月26日 由亦策软件和Qlik原厂联合主办的 汽车行业大数据沙龙 在上海巴黎春天新世界酒店召开 与会嘉宾踏着小雨纷至而来 一起围绕着汽车行业目前数据分析的瓶颈 企业发展的局限 以及对未来的构想建设等话题展开了精彩的分享和热切的探
  • ubuntu网卡设置

    UBUNTU网卡配置 主机名修改 hostnamectl set hostname ubuntu1804 cat etc hostname 网卡改名 修改配置文件为下面形式 vi etc default grub GRUB CMDLINE
  • Python面向对象基础练习——设计一个名为 MyRectangle 的矩形类来表示矩形

    设计一个名为 MyRectangle 的矩形类来表示矩形 这个类包含 1 左上角顶点的坐标 x y 2 宽度和高度 width height 3 构造方法 传入 x y width height 如果 x y 不传则默认是 0 如果 wid
  • NFS极品飞车21WIN11闪退解决办法,个人心得

    1 自己遇到的现象 系统升级win11后 之前能运行的NFS21打不开 黑屏后闪退 或者游戏中闪退 重新打开几次都不行 后台直接死 什么垃圾游戏 但是我就要玩 我自己游戏打开时是窗口化的 过10秒左右闪退 进程直接消失 多次打开可能会进 但
  • L2-3 完全二叉树的层序遍历 (25分) 2020 天梯赛

    L2 3 完全二叉树的层序遍历 25分 一个二叉树 如果每一个层的结点数都达到最大值 则这个二叉树就是完美二叉树 对于深度为 D 的 有 N 个结点的二叉树 若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点 这样的树就是完全二叉树
  • Makefile的基本用法

    1 Makefile的基本概念 目标 目标顶格写 后面是冒号 冒号后面是依赖 依赖 依赖是用来产生目标的原材料 命令 命令前面一定是Tab 不能是顶格 也不能说多个空格 命令就是要生成那个目标需要做的动作 2 示例代码 led bin st