1、什么是Makefile

​ 在嵌入式软件开发领域,使用 make 工具构建开发环境是非常常见的。而要使用 make 工具,就需要编写 Makefile 文件来定义一系列规则,指定需要先编译、后编译以及重新编译的文件。

使用 Makefile 的好处是实现了“自动化编译”,只需要一个 make 命令,整个工程就能够自动编译,大大提高了软件开发效率。

2、Makefile的规则

2.1 命名规则

​ 通常情况下,无论是使用"Makefile"还是"makefile"作为文件名都可以,常见的是使用"Makefile"作为文件名。

当然你也可以使用其他名称(例如"My_makefile")来命名Makefile,但在使用时应该加上-f选项,如:

make -f My_makefile

2.2 书写规则

目标 (target):指的是运行make生成什么,可以是执行文件,还可以是一个标签

依赖(prerequisites) : 要生成那个 target 所需要的文件或是目标

命令(command ):make 需要执行的命令

target : prerequisites
command # 例如
test: test.c
gcc test.c -o test

注意,命令所在的行必须是以 Tab 开头。很多初学者容易犯的“低级”错误是,用空格代替开头的Tab 键。

3、Makefile的工作原理

3.1 目标文件的生成

先检查生成目标文件所需要的依赖文件是否存在,如果不存在,则先按规则生成依赖文件,再生成目标文件。

例如:

目标文件是test,依赖所有的 ".o" 文件,如果没有检测到"main.o fun.o drv.o" 文件,则根据".o"的依赖规则, 让“main.c fun.c drv.c”文件生成对应的“ .o”文件,

之后再生成test文件

3.2 目标文件的更新

任何一个依赖文件有更新了,或者依赖文件的时间戳比目标文件新,则重新生成目标文件

以上是对Makefile基础知识的介绍,后面的文章将会结合例子,来介绍Makefile的具体用法。

轻松玩转makefile|基础知识的更多相关文章

  1. 5、Makefile基础知识汇总(转自陈皓总述)

    一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...

  2. makefile 基础知识

    $@    目标文件名 $< 第一个依赖文件名 $^ 规则所有依赖文件列表 如果不想让执行语句被打印出来,就在语句前面加上@符号 模式规则 %.o:%.c 后缀规则 .c.o 生成单进程的Mak ...

  3. 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化

    引言 今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个 ...

  4. 完整版的CAD技巧!3天轻松玩转CAD,零基础也能学会

    最近有很多小伙伴反应,CAD图纸学起来有点小困难,也许你还没能掌握技巧,CAD大神带你3天轻松玩转CAD,零基础也能快速学会. 一.看懂图纸是关键 CAD制图首先得让自己知道要绘制什么,如果心中对图纸 ...

  5. 学习 shell脚本之前的基础知识

    转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...

  6. LLDB基础知识

    LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进 ...

  7. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  8. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

  9. SSIS 基础知识

    微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 基础知识 SSIS 介绍 SSIS - SQL Server Integration Services 是用于实现企业级数据集成和数据 ...

  10. IT运维的五大基础知识

    IT运维的五大基础知识 | 浏览:331 | 更新:2014-09-25 11:36 IT运维对于很多企业都很重要,接下来运维的一些基础知识天天客服IT运维总监龙少文,就给大家介绍下IT运维的基础知识 ...

随机推荐

  1. CSS - 滤镜的妙用 - 制作炫彩圆环(外加动画)

    效果图如下: 话不多说,上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  2. CSS : 使用 z-index 的前提

    使用 z-index 前  , 需要将元素 定位设置为  position : relative .

  3. [转帖]学习如何编写 Shell 脚本(进阶篇)

    https://juejin.cn/post/6935365727205457928 前言 在<学习如何编写 Shell 脚本(基础篇)>一文中已经讲解了 Shell 脚本编程的基础知识, ...

  4. [转帖]07、kvm虚拟机的克隆

    操作前先关闭虚拟机 虚拟机的克隆 一.命令行克隆virt-clone(方法一) virt-clone -o vm1 -n vm2 -f /kvmdata/vm2.img 参数说明: -o:指定需要被c ...

  5. [转帖]Kafka中offsets.retention.minutes和log.retention.minutes之间的区别

    https://www.cnblogs.com/lestatzhang/p/10771115.html 前言 在Kafka中,我们可能会发现两个与retention相关的配置: log.retenti ...

  6. [转帖]深入理解mysql-第五章 InnoDB记录存储结构-页结构

    前言: 页是InnoDB管理存储空间的基本单位,上一章我们主要分析了页中的主要的构成行的存储结构-行格式,其中简单提了一下页的概念.这章我们详细讲解一下页的存储结构. 一.数据页结构 前边我们简单提了 ...

  7. 【OpenAI】ChatGPT函数调用(Function Calling)实践

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力. 本文 ...

  8. echarts饼状图不要中间的文字提示

    饼状图不要中间的文字提示信息 emphasis: { label: { show: false, //将这个设置为false }, }, 为什么饼状图不要中间的问题提示信息 因为有些时候,在文字很多的 ...

  9. echarts饼图中央自定义文字

    var option = { tooltip: { trigger: 'item' }, legend: { top: '5%', left: 'center' }, //中央自定义文字 title: ...

  10. 【小测试】golang中数组边界检查的开销大约是1.87%~3.12%

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 对比C/C++, golang等类型安全的语言会在数组访问 ...