Makefile详解——从入门到精通 Makefile是软件构建过程中的一个重要工具,它定义了项目的构建规则、目标和依赖关系,使得编译和链接过程能够自动化进行。掌握Makefile的编写和使用对于任何编程人员,尤其是嵌入式系统开发者来说都是必不可少的技能。 1. **make命令** `make`命令是执行Makefile的关键,它根据Makefile中的指令来决定哪些文件需要重新编译。`make -h`或`make --help`可以显示帮助信息,提供各种选项以控制make的行为。 2. **make命令选项** - `-f`或`--file`指定要使用的Makefile文件名。 - `-C`或`--directory`改变工作目录。 - `-d`打印调试信息,帮助理解make的执行过程。 - `-j`或`--jobs`允许同时运行的进程数量,用于并发编译提高效率。 - `-i`或`--ignore-errors`忽略命令执行时的错误,继续执行其他命令。 - `-k`或`--keep-going`即使有目标无法制作,也继续尝试其他目标。 - `-n`或`--just-print`仅打印命令而不执行,用于预览构建过程。 - `-q`或`--question`检查目标是否是最新的,如果需要更新则不显示任何输出。 3. **Makefile的基本结构** Makefile通常包含目标(target)、依赖(dependency)和命令(recipe)。目标是需要创建或更新的文件,依赖是目标生成所依赖的文件,命令则是执行的编译或链接操作。 4. **规则和依赖关系** 在Makefile中,规则通常以目标开始,接着是依赖项,然后是一行或多行命令。当依赖文件更新后,make会自动执行相应的命令来更新目标。 5. **变量和函数** Makefile支持变量的定义和使用,可以简化规则的编写。例如,可以定义`CC`变量为编译器,`CFLAGS`为编译选项。此外,还有内置函数如`$(wildcard)`用来查找所有匹配的文件,`$(patsubst)`进行字符串替换等。 6. **隐含规则** make内建了一些隐含规则,如C/C++源文件自动编译为对象文件,然后链接成可执行文件。不过,如果需要自定义构建流程,可以覆盖这些隐含规则。 7. **模式规则** 模式规则允许用通配符`%`来定义一组相关的规则,比如`%.o:%.c`表示所有`.c`文件编译为`.o`文件的规则。 8. **条件语句和函数** Makefile还支持条件语句,如`ifeq`, `ifneq`等,以及函数如`$(shell)`执行系统命令,`$(call)`调用用户定义的函数等,增加Makefile的灵活性。 9. **清理目标** 通常,Makefile会包含一个`clean`目标,用于清理编译过程中产生的临时文件和目标文件。 10. **多Makefile管理** 大项目可能需要多个Makefile,可以通过`include`指令包含其他Makefile,或者使用`-f`选项指定多个MakefileMakefile是构建和管理软件项目不可或缺的工具,理解和熟练使用Makefile能提高开发效率,减少手动编译的繁琐。通过深入学习和实践,你可以编写出高效且易于维护的Makefile,更好地适应各种项目需求。
2024-08-26 17:05:26 1.01MB 文档资料 MakeFile
1
帝斯曼7 请考虑:DSM 7尚未正式发布。 该beta版本自2020年12月8日起可用,并且(希望)在不久的将来会有一个Release Candidate(RC 1)。 我们预计Synology将于2021年晚些时候正式发布DSM 7(当DSM 7在2021年夏季之前未正式发布时,不要感到惊讶)。 在SynoCommunity中,尚未发布兼容DSM 7的软件包。 尽管您在使用DSM 7的Diskstation的Package Center中看到了SynoCommunity软件包,但这些软件包与DSM 7不兼容。 请不要创建表明无法在DSM 7上安装软件包_xy_的问题。 我们将在此处创建一个问题,以概述这些软件包(无论是否适用于DSM 7)。 但这不会在dsm7分支合并回master之前开始,而且我们有Synology提供的官方DSM 7工具链。 如果要尝试预览在dsm7分支上构
2024-06-13 11:22:29 39.17MB Makefile
1
ucGUI linux版,已加makefile,可以在linux下编译
2024-03-06 15:45:05 11.48MB linux
1
Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。在Linux(unix)环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写。此文件正是make正常工作的基础。
2024-02-18 18:08:37 1.34MB linux
1
1、此Makefile为个人原创,多年来从事Linux驱动开发单独编译驱动的模板Makefile,非常好用; 2、仅供参考
2024-01-18 12:54:58 2KB Linux Makefile
1
1.1 编写目的 海康威视综合安防平台 iSecure Center V1.1.0 产品(以下简称平台)提供了视频、 一卡通、停车场等方面的能力开放。基于平台开放的能力,第三方厂家和开发者可快速 实现丰富的综合应用。 本文档详细描述了平台开放的 API 接口、调用方式、使用场景等内容。用于指导开 发者基于平台做二次开发。 1.2 阅读对象 希望基于平台提供的能力,做应用开发的第三方厂家和开发者。 阅读群体需要具备以下技能,才能很好的理解文档内容。 1:良好的计算机编程能力。掌握 java,c++等常见的一种或者多种编程语言。 2:对安防知识有一定的认知。理解监控点、云台控制、报警等专业名称。 1.3 环境要求 API 接口的对接和联调需要部署海康威视综合安防平台 iSecure Center V1.1.0 或更 高版本的产品。 1.4 更新说明 无 1.5 快速上手 1.5.1 阅读指南 为了能快速得了解平台能提供的 API 功能,和快速上手,建议按照以下顺序阅读本文 档剩余内容: 1) 查阅【相关术语】章节,对文档内会出现的专业术语进行初步认知。 2) 查阅【协议概述】章节,掌握 API 的调用方式。
2023-11-29 14:34:58 4.67MB HIKVISION OpenAPI java
1
这是一个makefile,加入到源码工程,稍做修改,就能完美运行!
2023-10-24 11:01:51 6KB makefile 编译 链接
1
学完了GL拿来练练手的东西,用minGW编译不会有问题的,3月写的到现在才发,真是…… 和其他的程序比起来最大不同是魔方的格子是有方向的,所以要转出原来的图像可不是那么容易,贴图可以自己随便改,只要命名格式一致就行 没有什么强制性的授权协议,有需要的话,爱怎么用都可以
2023-10-20 08:03:23 1.63MB program
1
熟悉和掌握Makefile,当然参考文档也只是参考而已,还需要大家的实践才能出真知。这是李云编写的Makefile教程
2023-09-13 19:51:53 1.2MB Makefile
1
跟我一起写_Makefile.pdf 很好的makefile的入门教材。
2023-06-28 22:02:25 1.13MB Makefile linux
1