make工具和Makefile文件基础指令

目录

一、make工具和Makefile文件的引入

二、编写C程序

三、使用make工具和Makefile文件编译

Makefile 变量

Makefile 模式规则

Makefile 自动化变量

 Makefile 伪目标

 文章编写C程序部分有一些语法错误,由于时间原因没有更正,特此说明,以示警告!


一、make工具和Makefile文件的引入

       当源码文件比较多的时候就不适合通过直接输入gcc命令来编译,这时候就需要一个自动化的编译工具.

       make:一般说GNU Make,是一个软件,用于将源代码文件编译为可执行的二进制文件,make工具主要用于完成自动化编译。make工具编译的时候需要Makefile文件提供编译文件。

       Makefile:make工具所使用的文件,Makefile文件描述了整个工程的编译、连接规则。  

特点:

  • 如果修改了某几个源文件,则只重新编译这几个源文件
  • 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件

二、编写C程序

       编写一个小型的含有多个.c文件的C程序。

make工具和Makefile文件基础指令_第1张图片

make工具和Makefile文件基础指令_第2张图片

make工具和Makefile文件基础指令_第3张图片

make工具和Makefile文件基础指令_第4张图片

make工具和Makefile文件基础指令_第5张图片

结果:

make工具和Makefile文件基础指令_第6张图片

三、使用make工具和Makefile文件编译

make 命令会为 Makefile 中的每个以 TAB 开始的命令创建一个 Shell 进程去执行。

make工具和Makefile文件基础指令_第7张图片

当执行“make clean”命令以后,前面编译出来的.o 和 main 可执行文件都被删除掉了,也就是完成了工程清理工作。

make工具和Makefile文件基础指令_第8张图片

在我的代码中,main.o input.o 和 calcue.o 这三个依赖文件,我们输入了两遍,这种重复输入的工作就会非常费时间,而且非常容易输错,为了解决这个问题, Makefile 加入了变量支持。不像 C 语言中的变量有 int、char等各种类型, Makefile 中的变量都是字符串!类似 C 语言中的宏。

#Makefile 变量的使用
objects = main.o input.o calcu.o
main: $(objects)
    gcc -o main $(objects)

Makefile 变量

1、赋值符“=”
使用“=”在给变量的赋值的时候,不一定要用已经定义好的值,也可以使用后面定义的值。
2、赋值符“:=”

不会使用后面定义的变量,只能使用前面已经定义好的。
3、赋值符“?=”
如果变量前面没有被赋值,那么此变量就是本身,如果前面已经赋过值了,那么就使用前面赋的值。

4、变量追加“+=”
Makefile 中的变量是字符串,有时候我们需要给前面已经定义好的变量添加一些字符串进去,此时就要使用到符号“+=”。

Makefile 模式规则

当“%”出现在目标中的时候,目标中“%”所代表的值决定了依赖中的“%”值。

Makefile 自动化变量

make工具和Makefile文件基础指令_第9张图片

 Makefile 伪目标

Makefile 有一种特殊的目标——伪目标,一般的目标名都是要生成的文件,而伪目标不代表真正的目标名,在执行 make 命令的时候通过指定这个伪目标来执行其所在规则的定义的命令。

使用伪目标主要是为了避免 Makefile 中定义的执行命令的目标和工作目录下的实际文件出现名字冲突,有时候我们需要编写一个规则用来执行一些命令。

.PHONY : clean

 文章编写C程序部分有一些语法错误,由于时间原因没有更正,特此说明,以示警告!

你可能感兴趣的:(Linux嵌入式问题总结嵌入式,linux,运维,服务器)