Linux-make/Makefile

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、了解make/Makefile

对于make/Makefile首先我们需要了解make是一条命令Makefile是一个文件。

make是一个命令可以执行某条指令。这个我们理解那Makefile是一个文件那这个文件是干什么用的呢

这个文件内部一共包含两个东西

1、依赖关系

2、依赖方法

我们可以在Makefile这个文件里面写入依赖关系和依赖方法这两个东西。

二、生成可执行

那如何在Makefile里面编写依赖方法和依赖关系呢

在makefile里面输入依赖关系和依赖方法

执行make命令

三、make原理

make是如何工作的,在默认的方式下也就是我们只输入make命令。那么

1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

2、如果找到它会找文件中至顶而下找到第一个目标文件target在上面的例子中他会找到“mytest”这个文件并把这个文件作为最终的目标文件。

3、如果mytest文件不存在或是mytest所依赖的后面的mytest.o文件的文件修改时间要比mytest这个文件新那么他就会执行后面所定义的命令来生成mytest这个文件。

4、如果mytest所依赖的mytest.o文件不存在那么make会在当前文件中找目标为mytest.o文件的依赖性如果找到则再根据那一个规则生成mytest.o文件。这有点像一个堆栈的过程

5、当然你的C文件和H文件是存在的啦于是make会生成 mytest.o 文件然后再用mytest.o 文件声明make的终极任务也就是执行文件mytest了。

6、这就是整个make的依赖性make会一层又一层地去找文件的依赖关系直到最终编译出第一个目标文件。

7、在找寻的过程中如果出现错误比如最后被依赖的文件找不到那么make就会直接退出并报错而对于所定义的命令的错误或是编译不成功make根本不理。

8、make只管文件的依赖性即如果在我找了依赖关系之后冒号后面的文件还是不在那么对不起我就不工作啦。

四、程序的清理

mytest程序被删除了。

像clean这种没有被第一个目标文件直接或间接关联那么它后面所定义的命令将不会被自动执行不过我们可以显示要make执行。即命令——“make clean”以此来清除所有的目标文件以便重编译。

但是一般我们这种clean的目标文件我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是总是被执行的。

五、makefile中的特殊符号

这里$@表示mytest$^则表示mytest.c

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux