关注分享主机优惠活动
国内外VPS云服务器

如何使用Linux自动构建工具make和Makefile(Linux make build)

本文主要介绍“如何使用Linux自动化构建工具makemakefile”。在日常操作中,相信很多人对如何使用Linux自动化构建工具make和Makefile存在疑惑。主机频道查阅了各类资料,整理了简单易用的操作方法,希望能帮助大家解决“如何使用Linux自动化构建工具Make和Makefile”的疑惑!接下来,请跟随主机频道一起学习吧!

首先,项目中make和makefile的功能不计算源文件,源文件根据其类型、功能和模块放在几个目录中。Makefile定义了一系列规则来指定哪些文件需要首先编译,哪些文件需要稍后编译,哪些文件需要重新编译,甚至更复杂的函数操作。

所以,makefile的好处是&;mdash& ampmdash“自动编译”,一次编写只需要一个make命令,整个项目自动编译和翻译,大大提高了软件开发的效率。

Make是一个命令工具,它是解释makefile中的指令的命令工具。一般来说,大多数IDE都有这个命令,比如Delphi的make,Visual C++的nmake,Linux下的GNU的make。可见,makefile已经成为工程中的一种编译方法。Make是命令,makefile是文件,两者配合使用可以完成项目的自动构建。

二、make和Makefile的使用在了解依赖关系和依赖方法之前,我们先用C语言写一个小程序。

Linux自动化构建工具make和Makefile如何使用

我们创建了一个make.c文件并编写了一个hello make代码。

然后让我们创建另一个Makefile(Makefile是可以的,但不推荐)。

然后我们编辑Makefile并编写以下代码:

Linux自动化构建工具make和Makefile如何使用

然后我们保存并退出。

然后我们可以执行make命令。如果提示make不存在,这是因为它尚未安装,您可以切换到root身份安装。安装代码:yum install make或sudo install make。

正常执行make后,将出现以下显示。

Linux自动化构建工具make和Makefile如何使用

然后我们将查看当前目录中的文件。

我们可以找到一个可执行程序。那我们试着一起跑步吧。/制作。

Linux自动化构建工具make和Makefile如何使用

我们会发现这个可执行程序的输出使得。

这是我们的自动化构建工具,只需要在Makefile中进行配置。以后直接输入make编译代码。然后让我们再次尝试输入make。

Linux自动化构建工具make和Makefile如何使用

提醒我们make程序是最新的。也就是说,如果你没有修改或更新程序。那么它不会为你编译,因为你的程序没有移动。为什么要编译它?

然后让我们回来分析此时用Makefile编写的代码。

Linux自动化构建工具make和Makefile如何使用

首先,我们把它分成三部分。

制造

make.c

gcc制造。c -o制造-标准=c99

三者之间的关系是make依赖于make.c它们都是依赖的,而gcc make.c -o make -std=c99是make依赖于make.c的方法,称为依赖方法。

什么是依赖和依赖方法?

举个例子。

月底了,你的生活费没了。这时,你打电话给你父亲,对他说:“爸爸,月底了。我没有钱。"。这时候你爸爸就知道了,会给你生活费。在这里,你和你父亲是父子,所以你依赖你父亲,你们之间有一种依赖关系。而你父亲给你生活费,是你依靠父亲的一种方式,所以这就是依靠法。如果你这时候打电话给室友的父亲要生活费,他会直接让你走。因为你根本不构成依赖,没有依赖就没有依赖方法。

Linux自动化构建工具make和Makefile如何使用

所以我的程序是一样的。Make是一个生成的可执行程序。并且它依赖于make.c,因为它是从make.c编译而来的,依赖方法是执行命令gcc make.c -o make -std=c99。

依赖性原则

Make将在当前目录中找到一个名为“makefile”或“Makefile”的文件。

如果找到了,它将找到文件中的第一个目标文件。在上面的示例中,它将找到文件“hello”并将该文件作为最终目标文件。

如果hello文件不存在,或者hello所依赖的后来的test.o文件的文件修改时间比测试文件的修改时间新(可以通过触摸来测试),那么他将执行后来定义的命令来生成测试文件。

如果测试所依赖的test.o文件不存在,那么make将在当前文件中查找目标test.o文件的依赖关系,如果找到了,则根据哪个规则生成test.o文件。(这有点像堆叠过程。)

当然,你的C文件和H文件是存在的,所以make会生成一个test.o文件,然后使用test.o文件来声明make的最终任务,也就是执行文件测试。

这是整个make的依赖关系,make将逐层查找文件的依赖关系,直到最终编译出第一个目标文档。

在搜索过程中,如果出现错误,例如找不到最后一个依赖文件,那么make将直接退出并报告错误,但make只是忽略已定义命令的错误或未成功的编译。

Make只关心文件的依赖关系,也就是说,如果在我找到依赖关系后冒号后面的文件仍然不存在,那么对不起,我不会工作。

清理当我们编写代码时,我们经常需要重复编译和执行代码。

在下一次重新编译之前,您需要清理上次生成的可执行程序。但是在清理时,您可能会清理错误并意外删除源文件,这又会导致问题。

那么我们有什么办法可以解决它吗?答案当然是。

让我们继续编辑Makefile。

Linux自动化构建工具make和Makefile如何使用

我们在原来的基础上增加了。

。假的:干净

清洁:

Rm -f这么搞有什么作用。假的?

PHONY是伪目标,伪目标总是被执行。Clean是自定义的make指令,其使用方法为make clean。

那么让我们试试这个指令。

Linux自动化构建工具make和Makefile如何使用

我们可以看到它已经被清理了,那么为什么总是执行假目标呢?让我们多次执行它。

Linux自动化构建工具make和Makefile如何使用

我们总是可以执行它,那么我们执行make多少次呢?

Linux自动化构建工具make和Makefile如何使用

我们会发现make不能执行一次,因为它不是由修饰的。假的。那我就用。假的再试一次。

Linux自动化构建工具make和Makefile如何使用

然后我们保存并退出,并多次执行make。

Linux自动化构建工具make和Makefile如何使用

我们可以看到它已经执行了多次。但我认为没有必要,因为文件没有被修改。重新编译没有意义,所以添加。不建议使用PHONY进行自动编译。

我们保存了出口并多次执行make。

Linux自动化构建工具make和Makefile如何使用

我们可以看到它已经执行了多次。但我认为没有必要,因为文件没有被修改。重新编译没有意义,所以添加。不建议使用PHONY进行自动编译。

未经允许不得转载:主机频道 » 如何使用Linux自动构建工具make和Makefile(Linux make build)

评论 抢沙发

评论前必须登录!