需要研究android的编译过程,则首先需要了解makefile文件。所以现在就开始从最基本的学习——了解makefile。
1.makefile的语法规则:
target...:prerequisites...
command
...
...
说明:
- target:是一个目标文件,可以是Object File,也可以是执行文件。
- prerequisites:要生成那个target所需要的文件或者目标
- command:make需要执行的命令(任意的shell命令)
这表明的是一个文件的依赖关系,即target这一个或者多个目标文件依赖于prerequisites中的文件,其生成规则在command中定义。
注:在执行make时,如果prerequisites中有一个以上的文件更新时间比target文件晚,则command所定义的命令就会被执行。
2.一个简单makefile文件的示例(网上找的,为了说明语法规则,别介意哈)
edit:main.o kbd.o
cc -o edit main.o kbd.o
main.o:main.c defs.h
cc -c main.c
kbd.o:kbd.c defs.h command.h
cc -c kbd.c
clean:
rm edit main.o kbd.o
说明:
- 在该文件所在的目录下,直接输入make命令就可以生成edit可执行文件。
- target包括:edit和中间的目标文件("*.o")
- prerequisites包括:冒号后面的 .c 文件和 .h 文件
- command一定要以一个Tab键作为开头
- clean:上面代码中的clean只不过是一个动作名字,和C中的lable一样。其冒号后面什么也没有,那么make就不会去找文件的依赖性,也就不会执行其后定义的命令。如果要执行后面的命令,则需在make命令后明显的指出这个lable的名字。eg:make clean
3.make的工作过程
在默认方式下,也就是我们只输入make命令,那么
- make会在当前目录下找makefile文件
- 如果找到该文件,它会找文件中第一个目标文件作为最终的目标文件,如果最终目标文件不存在或者后面的依赖文件的修改时间比较晚,则重新执行后面的命令生成最终的目标文件
注:make会一层一层的去找文件的依赖关系,如果出现错误则make直接退出并报错。
4.makefile中变量的使用:
在makefile一开始这样的定义:
objects=main.o kbd.o
于是在makefile中以“$(objects)”的方式就可以使用这个变量,如下:
edit:$(objects)
cc -o edit $(objects)
main.o:main.c defs.h
cc -c main.c
kbd.o:kbd.c defs.h command.h
cc -c kbd.c
clean:
rm edit $(objects)
后续任务:makefile学习 shell命令学习
目标:makefile基本知识掌握后,可以写一个简单的makefile文件测试
分享到:
相关推荐
《跟我一起写makefile》和《gnumakefile》是两本关于makefile的重要学习资料,它们涵盖了构建自动化工具make的使用、配置以及优化等多个方面。makefile是软件开发中的核心部分,它允许开发者通过简洁的规则定义来...
这个压缩包“Makefile学习参考资料.zip”包含了两份PDF文档,分别是“跟我一起学Makefile.pdf”和“gun_make.pdf”,很可能是关于Makefile的基础教程和GNU Make的官方文档。 在Makefile中,最重要的概念是目标...
1. Makefile概述 Makefile是一个脚本文件,其中包含了编译和链接项目所需的各种规则。它描述了项目中哪些文件需要先编译,哪些文件需要后编译,哪些文件依赖于其他文件等等。通过使用makefile,开发者可以控制复杂的...
学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...
《Makefile学习手册》是一本专门针对Makefile开发的详细指南,旨在帮助读者从基础到深入地理解并掌握这一强大的构建工具。Makefile是软件工程中用于自动化编译和链接过程的重要文件,尤其在Unix/Linux环境中广泛使用...
《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...
### Make工具及makefile规则学习 #### 一、Make工具的功能 Make工具是一种自动化构建工具,主要用于管理和构建大型软件项目。其主要功能包括: - **避免不必要的重复编译**:通过检查文件的时间戳来确定哪些文件...
Makefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料....
* 学习曲线陡峭:Makefile 的语法非常复杂,需要花费一些时间来学习和掌握。 * 不好 debug:Makefile 的错误信息不够明确, debug 相对困难。 Makefile 是一个功能强大且灵活的自动化编译工具,在软件开发过程中...
Makefile学习笔记 Makefile是一个编译系统自动构建工具,它可以根据源文件的变化自动编译和链接对象文件,并生成执行文件。Makefile文件包含了一系列的规则和命令,这些规则和命令描述了如何从源文件生成目标文件。...
Makefile学习教程: 跟我一起写 Makefile 0 Makefile概述 0.1 关于程序的编译和链接 1 Makefile 介绍 1.1 Makefile的规则 1.2 一个示例 1.3 make是如何工作的 1.4 makefile中使用变量 1.5 让make自动推导 ...
make中文手册等 小测试: # Readme: # use: make config # use: make dir # use: make # use: make clean # use: make rebuild # use: make cleanall # use: make test # use: make
【Makefile学习笔记1】 Makefile是Unix环境下用于自动化编译和链接的脚本文件,它可以帮助开发者管理和构建复杂的C/C++项目。本篇笔记主要探讨Makefile在满足可重用性、易用性和全面覆盖性等需求时的实现方法。 ##...
压缩包中的三份PDF文件分别对应以上三本书的内容,它们构成了一个完整的makefile学习资源库。首先,你可以通过《跟我一起写makefile》快速入门,了解makefile的基本构造和使用。然后,深入研究GNU Make Manual,掌握...
标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...
这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`Makefile`的主要组成部分,以及如何编写和使用它来编译和管理项目。 `Makefile`的核心...
通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...