make和makefile

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

make是一条指令

makefile是一个文件

make和makefile一般都是两两配合使用,熟练掌握这俩的使用方法会对我们以后完成大型工程的能力打下基础

一、基础使用

我们知道,使用gcc/g++运行程序时需要输入许多 指令,而make/makefile可以很好的帮助我们节省掉这些繁杂的编写过程,接下来我先告诉大家如何使用:

在需要编译的文件的同级目录下创建文件makefile,用vim打开后输入指令,直接用图演示:

make和makefile,linux,运维,服务器

顺便我们来讲讲依赖关系和依赖方法

图中第一行test:test.c为依赖关系,test.c即将生成test的关系,第二行为该依赖关系的实现方法即为依赖方法

保存退出之后,我们直接输入make就可以对test.c编译成可执行程序:

make和makefile,linux,运维,服务器

之后我们对makefile进行修改:

make和makefile,linux,运维,服务器

我们写了一个清理清理掉生成的可执行文件,此类不需要依赖关系,直接在依赖方法中写即可,之后只需输入make  clear就可以清理掉可执行文件:

make和makefile,linux,运维,服务器

有的人就会问,为什么我们使用clear要再make后面写名字而编译不用?这时我们换一下clear和上面程序的先后顺序看一下:

make和makefile,linux,运维,服务器

make和makefile,linux,运维,服务器

我们看到,makefile定义的指令在第一行或者在第一次走的程序只需要输入make就可执行,往下都要输入对应的命名。

二、使用make和makefile时小细节

make和makefile,linux,运维,服务器

有图我们可以看到,make之后如果不修改文件属性或者修改源代码就不能多次make,为什么?

有一个直接的回答就是没必要,提高编译效率

那么,make是怎么做到的?

我们知道,一般是先有源文件,才有可执行文件,一般而言源文件的最近修改时间比可执行文件的时间要老,如果更改了源文件的最近修改时间,就会比可执行文件的时间更新,make限制我们多次make的实现方法就是比较两文件的时间新旧:

用指令stat来查看两文件的时间来对比一下:

make和makefile,linux,运维,服务器

结果很明显,如果我们修改一下test.c文件:

make和makefile,linux,运维,服务器

可以看到,test.c比test更新,这时候make就没有问题,(make判断的时间是以modify来判断)

access:最近访问时间

modify:对文件内容修改时间

change:对文件属性修改时间

一般来讲在改变test.c文件内容时,内存什么的也会发生变化,相当于熟悉也发生了变化,所以change也会跟着改变,但在例如修改文件权限时就只会有change改变。

access一般更新文件三四次才更新一次时间,为了节约磁盘消耗增加效率

但是,如果我就是想一直不修改文件而一直make怎么办?

一种方法就是用touch来把文件时间改到最新,当然这个很麻烦

第二种方法就是在makefile里提供了一条指令:PHONY:name

make和makefile,linux,运维,服务器make和makefile,linux,运维,服务器

特殊符号:

make和makefile,linux,运维,服务器

$@代表依赖关系中左边,$^代表依赖关系的右边名字

如果不想显示编译过程,在gcc前加@即可文章来源地址https://www.toymoban.com/news/detail-857574.html

到了这里,关于make和makefile的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(55)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(58)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(73)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(39)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(46)
  • Linux--make & makefile

    make 工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能, 而是用类似于批处理的方式—— 通过调用 makefile 文件中用户指定的命令来进行编译和链接的 。 makefile 命令中就包含了调用 gcc(也可以是别的编译器)去编译某个源文件的命令。 makefile 在一些简

    2024年02月12日
    浏览(28)
  • Linux工具make与makefile

    自动化构建工具 make / Makefile 是一个备受关注的话题。在现代软件开发中,构建和部署过程越来越复杂,需要更加高效和自动化的工具来帮助开发人员管理项目。 Make / Makefile 就是这样一种工具,它可以通过定义规则和依赖关系来自动化地构建项目。本文将介绍 make / Makefile 的

    2023年04月19日
    浏览(27)
  • 【Linux】Make和Makefile快速入门

    作者简介:დ旧言~,目前大二,现在学习Java,c,c++,Python等 座右铭:松树千年终是朽,槿花一日自为荣。 目标:熟练掌握Make和Makefile的使用 毒鸡汤:人生就像一条河,左岸是无法忘却的回忆,右岸是值得把握的青春,中岸是正在燃烧的面孔。 望小伙伴们点赞👍收藏✨加

    2024年02月04日
    浏览(29)
  • Linux: make/Makefile 相关的知识

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

    2024年01月24日
    浏览(30)
  • Linux开发工具Make/Makefile篇

    我们使用gcc/g++编译代码时,每次都要输入一长串的指令,对于单个文件或者文件较少的时候,我们还能接受,可是当文件较多的时候,我们再一个一个编译,就会比较麻烦。Linux中 make 命令加上 Makefile 文件搭配使用,就可以完成项目的自动化构建。 C代码 创建makefile文件 写入

    2024年02月12日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包