【Linux】-自动化构建工具(make/makefile)

这篇具有很好参考价值的文章主要介绍了【Linux】-自动化构建工具(make/makefile)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:小树苗渴望变成参天大树
作者宣言:认真写好每一篇博客
作者gitee:gitee
【Linux】-自动化构建工具(make/makefile)
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!


前言

今天我们来讲讲再Linux中开发必备的一项技能,没有这个技能就不适合大型项目的开发,虽然后来这个功能会有专门的工具生成,但是我们要明白他的原理才行,就好比我们以后学了STL,但是也要学习底层原理,才能孰能生巧,今天讲的知识点就是自动化构建工具make/makefile,接下来我就给大家具体介绍一下吧


make: 是一条指令
makefile: 是一个项目目录下的文件

再我们的vs上我们不管是写一个文件还是多文件的项目,想要使程序跑起来,变成可执行程序,直接快捷键,或者上方按键点一下就行了,那为什么像vs这种开发软件可以直接将多个文件直接编译呢??他的底层肯定也有自动化构建的工具使他能完成这一系列的操作。
那我们的make就相当于快捷键,而makefile相当于把多个源文件打包再一个文件里面,通过make直接编译所有源文件,就不需要一个个gcc进行编译。而且清理生成的文件也可以放在makefile文件里面,实验make去执行。

给大家把模糊概念讲清楚了,接下来我就勇案例具体给大家介绍
【Linux】-自动化构建工具(make/makefile)
我们创建一个叫make的项目目录,里面写文件,创建一个makefile,目前makefile文件里面是空内容。


接下来先来了解两个概念:依赖关系,依赖方法

有一天你给你爸打电话,说要打钱给我了,依赖关系是父子,依赖方法是打钱,缺少了这个依赖关系,就不会打钱给你了。大家先简单理解一下。

我们再上面说过,程序经过预处理,翻译,汇编,链接,生成下面几个文件,他们直接的依赖关系是什么:

hello.o , 它依赖 hello.s
hello.s , 它依赖 hello.i
hello.i , 它依赖 hello.c

想要编译这些文件或者重新清理文件,传统的方式是:
【Linux】-自动化构建工具(make/makefile)

现在有了依赖关系和依赖方法,我们可以这样去做编译我们的程序,接下来我们再来编写makefile

【Linux】-自动化构建工具(make/makefile)
我们退出保存,使用make试试:
【Linux】-自动化构建工具(make/makefile)
我们对比一下makefile文件里面的内容,看着是从下往下面执行的,但实际从上往下扫描的,当依赖方法找不到对应的文件,就会往下面找,有点像栈的形式,大家试着理解一下,我们每次只需要使用一个make,就可以直接把我们想要的文件都生成了,不需要每个文件运行的时候都需要gcc一下太麻烦了。

对于清理文件:
【Linux】-自动化构建工具(make/makefile)
【Linux】-自动化构建工具(make/makefile)
伪目标:

.PHONY:clean//声明clean是伪目标文件

【Linux】-自动化构建工具(make/makefile)
我们发现一次make之后,就make不行了,提示可执行程序是最新的了,我们来执行一下清理工作看看:

【Linux】-自动化构建工具(make/makefile)
他可以执行很多次,按这个效果,我们把之前所有的都变成伪目标看看:
【Linux】-自动化构建工具(make/makefile)
一般的我们只把清理工作弄成伪目标文件,为什么要这么做呢??
我个人理解是清理可以一直呗执行时当心清理不干净,而文件已经时最新编译状态了,就不需要再执行,大家知道伪目标文件就好的。

注意:

【Linux】-自动化构建工具(make/makefile)
【Linux】-自动化构建工具(make/makefile)

原因是当只输入make的时候,会优先匹配第一个目标文件进行执行,后面的执行就必须加目标文件名才可以,这一点大家要理解。


makefile怎么知道我的程序是最新状态的
再上面说到过,我们make一次之后再make就不行了,因为普通的目标文件不能总是被执行的,因为最新的可执行文件是最新的,就不能一直被执行,所以我们想要知道make是怎么知道我们的可执行文件是最新的状态,他肯定通过一定的指标去对比才会发现它是最新的

我们使用stat来查看:
【Linux】-自动化构建工具(make/makefile)
它是通过这三个时间来对比之前的文件判断是否需要去重新执行make指令,我们一起来研究一下这三个时间到底是什么

  1. Access是文件最近的访问时间
  2. Modify是文件内容最近修改的时间
  3. Change是文件属性最近修改的时间

这三者的关系是,当一个文件内容被修改了,那他自然的就会访问了文件,文件的属性也会发生改变,所以有的修改会影响其他的,这个大家要先清楚

多文件案例:
【Linux】-自动化构建工具(make/makefile)
我们来看看自动化构建是怎么完成的:
【Linux】-自动化构建工具(make/makefile)
相信大家应该堆自动化构建工具了解差不多了,对于我们学习来说,我今天所讲的大家掌握就足够了,以后到公司开发后,会有自动生成构建化的工具,不需要自己写了,那样就更方便了。

对比vs上的操作:
【Linux】-自动化构建工具(make/makefile)

vs上的重新生成解决方案就相当于make
清理解决方案就相当于make clean

那我们今天的知识点就先分享到这里了,我们下篇再见
【Linux】-自动化构建工具(make/makefile)文章来源地址https://www.toymoban.com/news/detail-476687.html

到了这里,关于【Linux】-自动化构建工具(make/makefile)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux:项目自动化构建工具——make/Makefile

    前言: 本章主要内容有认识与学习 Linux 环境下如何使用项目自动化构建工具—— make/makefile 。 当我们编写一个较大的软件项目时,通常需要将多个源文件编译成可执行程序或库文件。为了简化这个过程,我们可以使用 make 工具和 Makefile 文件。 Makefile 文件可以帮助我们 自动

    2024年02月13日
    浏览(31)
  • 【Linux】项目自动化构建工具 —— make/Makefile

    前言: 在上一期的博文中,我们对 Linux 下的编译器 - gcc/g++的使用进行了详细的讲解,今天我将给大家讲解的是关于  【Linux】项目自动化构建工具 —— make/Makefile  的详细使用教程!! 本文目录 (一)前情摘要 (二)背景介绍 1、Makefile 的基本认识 2、make 的基本认识 3、

    2023年04月19日
    浏览(45)
  • 【Linux】项目自动化构建工具-make/Makefile

    会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂

    2023年04月09日
    浏览(34)
  • 【Linux】自动化构建工具make和Makefile

           🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️社区 : 进步学堂       🛰️专栏 : Linux之路       🛰️欢迎关注:👍点赞🙌收藏✍️留言 在一个工程中的源文件不计数,其按类型、功能、模

    2023年04月18日
    浏览(28)
  • Linux---(六)自动化构建工具 make/Makefile

    make是一个命令。 Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 🎗️会不会写Makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 🎗️一个工程中的源文件数不胜数,其按照类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则

    2024年02月05日
    浏览(32)
  • 【Linux】自动化构建工具-make/Makefile详解

     前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!  订阅专栏阅读:YY的《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本知

    2024年02月16日
    浏览(26)
  • 【Linux】Linux项目自动化构建工具-make/makefile

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门到精通 🎉代码仓库:小智的代码仓库 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需

    2024年02月12日
    浏览(50)
  • [Linux 基础] make、Makefile自动化构建代码工具

    make是一个命令,Makefile是一个在当前目录下存在的一个具有特定格式的文本文件。 在VS编译器中,我们在编译执行代码的时候ctrl+f5就可以了,而在linux中我们需要使用gcc/g++ 配合选项并需要正确的格式才可以完成编译,这样是比较麻烦的,我们make与Makefile可以实现自动化构建

    2024年02月08日
    浏览(28)
  • 【Linux】快速上手自动化构建工具make/makefile

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是make / makefile 2.如何使用make / makefile (1)我们来看makefile如何写? (2)如何与

    2024年02月05日
    浏览(27)
  • 【Linux】项目自动化构建工具——make/Makefile及拓展

    1、背景知识 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动化编译”,一旦

    2023年04月27日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包