iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux自动化构建工具make和Makefile如何使用
  • 444
分享到

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

linuxmakemakefile 2023-05-25 14:05:46 444人浏览 薄情痞子
摘要

这篇文章主要介绍“linux自动化构建工具make和Makefile如何使用”,在日常操作中,相信很多人在Linux自动化构建工具make和Makefile如何使用问题上存在疑惑,小编查阅了各式资料,整理出

这篇文章主要介绍“linux自动化构建工具make和Makefile如何使用”,在日常操作中,相信很多人在Linux自动化构建工具make和Makefile如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux自动化构建工具make和Makefile如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、make和Makefile的作用

在一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作。

所以,makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个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如何使用

然后我们ll来查看当前目录下的文件。

我们可以发现多了一个可执行程序make。那我们运行用 ./make 运行试试。

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

我们会发现这个可执行程序输出make。

这就是我们的自动化构建工具,只需要在Makefile里面配置一下。往后直接输入make即可编译代码。那我们再输入一次make试试。

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

提示我们 make程序是最新的。 也就是说,如果你没有修改或者更新程序的话。 那么则不会为你编译,因为你程序都没动呀,编译它干嘛。

那么此时我们回过来分析一下 Makefile里面写的代码。

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

首先我们把它分为三部分

make

make.c

GCc make.c -o make -std=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”的文件。

  • 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“hello”这个文件, 并把这个文件作为最终的目标文件。

  • 如果hello文件不存在,或是hello所依赖的后面的test.o文件的文件修改时间要比test这个文件新(可 以用 touch 测试),那么,他就会执行后面所定义的命令来生成test这个文件。

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

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

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

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

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

清理

我们平时在写代码的时候,经常会需要反复编译,执行代码。

而在下一次重新编译之前,需要清理一下上次生成的可执行程序。但是清理的时候可能清理错误,不小心把源文件删了,这时又造成了问题。

那么我们有没有方法解决呢?答案是当然有。

我们继续编辑Makefile文件。

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

我们在原有的基础上加上了

.PHONY:clean

clean:

	rm -f make

那么.PHONY有什么作用呢?

.PHONY修饰的是一个伪目标的,伪目标总是被执行的。clean是自己定义的一条make指令,使用方法为 make clean

那我们来试试吧这条指令

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

我们可以看到它被清理了,那为什么说伪目标它总是被执行的呢?我们多次执行它看看。

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

我们可以一直执行它,那么我们多次执行make呢?

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

我们会发现,make执行了一次,就无法执行了,因为没有被.PHONY修饰。那么我用.PHONY修饰它再试试。

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

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

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

我们就可以看到它被多次执行了。但我觉得没有这个必要,因为文件没有被修改的话。重新编译没有意义,所以自动化编译不建议加上.PHONY

我们保存退出,多次执行make

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

我们就可以看到它被多次执行了。但我觉得没有这个必要,因为文件没有被修改的话。重新编译没有意义,所以自动化编译不建议加上.PHONY

到此,关于“Linux自动化构建工具make和Makefile如何使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Linux自动化构建工具make和Makefile如何使用

本文链接: https://www.lsjlt.com/news/218354.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux自动化构建工具make和Makefile如何使用
    这篇文章主要介绍“Linux自动化构建工具make和Makefile如何使用”,在日常操作中,相信很多人在Linux自动化构建工具make和Makefile如何使用问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2023-05-25
    linux make makefile
  • Linux自动化构建工具make和Makefile怎么使用
    这篇文章主要讲解了“Linux自动化构建工具make和Makefile怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux自动化构建工具make和Makefile怎么使用”吧!一...
    99+
    2023-07-06
  • Linux自动化构建工具make和Makefile详解
    目录一、make和Makefile的作用二、make和Makefile的使用清理一、make和Makefile的作用 在一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 ...
    99+
    2023-04-19
    Linux自动化构建工具 Linux make Makefile 自动化构建工具make 自动化构建工具Makefile
  • Linux自动化构建工具Makefile与make怎么用
    这篇文章主要介绍“Linux自动化构建工具Makefile与make怎么用”,在日常操作中,相信很多人在Linux自动化构建工具Makefile与make怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”L...
    99+
    2023-06-28
  • Linux下的自动化构建工具之make/makefile的用法详解
    目录一、make和makefile的区别二、makefile的原理1、make的原理详解2、临时文件的清理3、文件的三个时间三、makefile的推导规则四、实现一个进度条1、缓冲区问题2、实现倒计时程序3、进度条的实现...
    99+
    2024-04-02
  • golang构建工具Makefile使用详解
    目录正文正文 可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖,运行测...
    99+
    2024-04-02
  • 如何使用 Bash 和 PHP 构建自动化工作流程?
    Bash 是一种流行的 Unix shell 和命令语言,而 PHP 是一种广泛用于 Web 开发的动态编程语言。它们都是强大的工具,可以帮助我们自动化许多重复的任务,提高生产力。本文将介绍如何使用 Bash 和 PHP 构建自动化工作流程...
    99+
    2023-06-14
    numpy laravel bash
  • 使用Jenkins自动化构建工具进行敏捷开发
    目录一、序言二、安装与使用(一)安装1、查看初始密码2、修改默认工作空间(二)使用1、构建配置2、添加项目(三)免密登录三、触发策略(一)定时触发(二)URL 触发(三)钩子触发附录...
    99+
    2024-04-02
  • 如何使用Linux下的自动化运维工具ansible
    本篇内容介绍了“如何使用Linux下的自动化运维工具ansible”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么样的情形需要批量部署...
    99+
    2023-06-12
  • 如何使用Linux自动化工具提高生产率
    如何使用Linux自动化工具提高生产率,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。用 AutoKey 配置你的键盘,纠正常见的错别字,输入常用的短语等等。AutoKey&nb...
    99+
    2023-06-15
  • PHP CI/CD 与自动化部署中构建和部署工具的使用
    php ci/cd 中构建和部署工具的使用有助于提升开发和部署效率,主要使用以下工具:构建工具:docker(构建一致的环境)、composer(管理依赖项)部署工具:jenkins(功...
    99+
    2024-05-09
    构建工具 部署工具 docker composer apache
  • 怎么使用Jenkins自动化构建工具进行敏捷开发
    这篇“怎么使用Jenkins自动化构建工具进行敏捷开发”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Jenkins自...
    99+
    2023-06-29
  • 如何使用MySQL自动化运维工具goinception
    这篇文章主要讲解了“如何使用MySQL自动化运维工具goinception”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用MySQL自动化运维工具go...
    99+
    2024-04-02
  • 使用docker搭建jenkins自动化工具的实现
    目录一、jenkins二、基于docker 搭建 jenkins三、jenkins 自动发布 SpringBoot 镜像一、jenkins Jenkins是一个开源软件项目,是基于J...
    99+
    2024-04-02
  • Python自动化工具tidevice的安装和使用
    本篇内容介绍了“Python自动化工具tidevice的安装和使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1. 前言最近,...
    99+
    2023-06-15
  • Linux下自动化工具Parallel SSH的使用方法
    这篇文章将为大家详细讲解有关Linux下自动化工具Parallel SSH的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。parallel-ssh 是为小规模自动化而设计的异步并行的...
    99+
    2023-06-15
  • Linux下使用Jenkins自动化构建.NET Core应用
    目录部署 Jenkins安装插件拉取镜像制作 Jenkinsfile 脚本构建流水线观察部署 Jenkins 请提前在 Linux 上安装 Docker,在 Linux 中,我们使用...
    99+
    2024-04-02
  • Linux中如何部署自动化运维工具ansible
    小编给大家分享一下Linux中如何部署自动化运维工具ansible,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ansible是新出现的自动化运维工具,基于Pyt...
    99+
    2023-06-27
  • 如何使用GNOME优化工具自定义Linux桌面
    这篇文章主要介绍如何使用GNOME优化工具自定义Linux桌面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在 Ubuntu 18.04 或其它版本上安装 GNOME 优化工具GNOME 优化工具可从 Ubuntu ...
    99+
    2023-06-16
  • 怎么使用Python自动化工具Fabric
    这篇文章主要讲解了“怎么使用Python自动化工具Fabric”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python自动化工具Fabric”吧!Fabric 主要用在应用部署与系...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作