当前位置: 首页 > news >正文

分类信息网站怎么做做网站服务器硬盘多大

分类信息网站怎么做,做网站服务器硬盘多大,如何制作免费永久网站,河南哪里网站建设公司欢迎来到 CILMY23 的博客 🏆本篇主题为:从入门到精通:Make与Makefile完全指南 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:C | C语言 | Linux | Python | 数据结构和算法 | 算法专题 &#x1…
欢迎来到 CILMY23 的博客

🏆本篇主题为:从入门到精通:Make与Makefile完全指南

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:C++ | C语言 | Linux | Python | 数据结构和算法 | 算法专题

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


文章目录

  • 从入门到精通:Make与Makefile完全指南
    • 1. 什么是Make/Makefile?
      • 为什么需要Make?
    • 2. 安装
      • Centos安装
    • 3. Makefile基础语法
        • 基本结构
    • 4. Makefile的特性
      • 4.1 makefile的执行顺序
      • 4.2 makefile无法生成可执行文件
        • 如何强制重新编译?
      • 4.3 makefile进行多文件编译
      • 4.4 makefile的自动推导
      • 4.5 makefile的变量
      • 4.6 makefile省去中间过程


从入门到精通:Make与Makefile完全指南

1. 什么是Make/Makefile?

Make是一个自动化构建工具,主要用于管理源代码的编译和构建过程。它通过读取Makefile文件来执行构建任务,能够自动检测文件变化并仅编译必要内容,显著提升开发效率。

为什么需要Make?

  • 自动化重复的编译命令

  • 处理复杂的依赖关系

  • 实现增量编译(仅编译修改过的文件)

  • 标准化团队的构建流程

2. 安装

Centos安装

# CentOS/RHEL
sudo yum install make

3. Makefile基础语法

因为make是一个命令,而makefile是一个文件,所以我们需要在我们的当前目录下创建一个makefile文件。

基本结构

Makefile 规则的基本格式为:

makefile
目标(target): 依赖(dependencies)command

makefile主要分为三个部分

  • 目标文件 (target):要生成的文件或操作名称(如 hello.exe 或 clean)。
  • 依赖文件 (dependencies):生成目标所需的文件或条件(如 hello.c)。
  • 依赖方法,命令 (command):生成目标的具体命令(以 Tab 开头,不能用空格)。

参考如下,这里的phony先忽略,我们先看前面的就行了。

在这里插入图片描述

根据上图我们可以解释一下这三个部分,首先hello.exe是我们的目标文件,冒号后跟着的是一个依赖文件列表,按照空格为分割符,可以有多个文件,也可以为空。
再接下来是依赖方法,一定要用tab符号开头,然后写指令。

在这里插入图片描述

然后我们可以用make命令运行这一部分

在这里插入图片描述
我们可以看到生成了目标文件hello.exe,执行的命令,也就是依赖方法,是我们的第二行。

那我们生成的时候总会有很多的临时文件,怎么办呢?

这时候makefile就提供了一个清理功能。

在这里插入图片描述

我们可以在makefile文件中编辑clean,实现这一功能。

我们在终端中输入 make clean 就可以很好的清理了。

在这里插入图片描述

4. Makefile的特性

4.1 makefile的执行顺序

我们利用make执行makefile的时候,默认是从上往下执行的,也就是会生成第一个目标文件。

在这里插入图片描述
make会根据我们的makefile自动执行编译/清理工作。

4.2 makefile无法生成可执行文件

实际上makefile有一个特性,是对于最新的可执行文件默认不生成,这实际上是为了提高效率,你可以看到你的报错如图所示:

在这里插入图片描述

make说hello.exe 是最新的日期。

那makefile是怎么知道我们需要重新生成了呢?

这就不得不提我们之前涉及的一个时间了:
在这里插入图片描述

Make 的工作原理是基于时间戳的依赖检查,Make 会对比目标文件(如 hello.exe)和依赖文件(如 hello.c)的修改时间:如果目标文件比依赖文件旧(或目标文件不存在),则执行命令重新生成。如果目标文件比依赖文件新,则跳过命令,提示 is up to date。

所以当我们第一次执行 make

gcc -o hello.exe hello.c

Make 检测到 hello.exe 不存在 或 hello.c 被修改过,触发编译命令,生成 hello.exe。

第二次执行 make

make: 'hello.exe' is up to date.

Make 发现 hello.exe 已存在,且它的修改时间晚于 hello.c 的修改时间,因此认为无需重新编译。

如何强制重新编译?

如果希望无视时间戳强制重新编译,可以使用.PHONY:
在这里插入图片描述
方法:

.PHONY:xxx

xxx对应的依赖方法总是要执行的,xxx对应的是目标文件,或者clean。

4.3 makefile进行多文件编译

如果总是要写每个文件那就很麻烦了,因为一个工程里可能有很多文件,所以makefile提供了一种方法直接进行多文件的编译。

 hello.exe:hello.cgcc -o $@  $^

这里的@就对应我们的目标文件,^就对应我们的依赖文件列表,这样的话我们就可以进行多文件的编译。

在这里插入图片描述

makefile就会自动替代,$可以理解为自动取内容。

4.4 makefile的自动推导

我们用makefile重新进行这个程序的完全翻译过程就好做多了

在这里插入图片描述

在这里插入图片描述

我们发现makefile给我们都按照顺序推导完了,生成了对应的目标文件,并且最终文件也可以运行.

从这个过程中我们发现,makefile/make会自动根据文件中的依赖关系,进行自动推导,帮助我们执行所有相关的依赖方法。

因为我们没有hello.o的依赖文件的时候,是无法生成hello.exe可执行文件的,所以第二行的命令就无法执行,

  1 hello.exe:hello.o2   gcc -o hello.exe hello.o

makefile就会去找对应的依赖

3 hello.o:hello.s
4   gcc -c hello.s -o hello.o

makefile也同样找不到,直到最后一段找到了,然后此刻就会生成对应的依赖,所以这里有一个依赖链:修改hello.c会触发后续所有目标的重建(hello.i → hello.s → hello.o → hello.exe)。这个过程就像入栈一样,第一个入栈,然后第二个入栈……,执行的时候就像递归一样,往回推导,这也就是我们的makefile会自动推导的情况。

如果makefile中的内容是乱序的,那makefile也会自动推导,也就是顺序不影响makefile执行。但是我们得把最重要的文件放前面,就比如下面这种情况:

在这里插入图片描述

在这里插入图片描述

4.5 makefile的变量

makefile不像C语言那样设计变量,它跟python一样,左边是变量名字,右边的变量的内容。

目标文件的变量:

1 bin=hello.exe   
//bin = hello.exe

注意,中间不能用空格, 也就是我们这里的第二种写法是不允许的。

同样的,依赖文件我们也可以采用这种形式

2 src=test.c

这里的依赖文件中间可以用空格隔开。

那如何使用变量呢?我们得加上$()

在这里插入图片描述

4.6 makefile省去中间过程

如果我们不想看到中间过程,只需要在对应的命令前面加上@就可以了。

在这里插入图片描述
这样中间过程就很简略了
在这里插入图片描述

http://www.yayakq.cn/news/799503/

相关文章:

  • 四川省城乡住房和城乡建设厅网站网站开发的选题审批表
  • 北沙滩网站建设厦门网站建设114
  • vs2008网站消息弹窗怎么做潜水艇官方网站代理
  • 南阳seo网站排名优化wordpress get user
  • 做团购网站视频西安做网站的网络公司
  • 如何自己设置网站网站建设xs029
  • 欧美建设网站新手学做网站vs
  • 东莞网站设计案例优质网站建设在哪里
  • 朔州网站建设费用国家信息企业公示网官网登录入口
  • 台州网站建设制作电商图片
  • 全广告网站关于网站开发的文档
  • 无锡做网站公司有哪些电话网站建设潮州
  • 桂林旅游网站制作公司wordpress 首页登录
  • 建设网站过水建筑网站建设
  • 有后天管理的网站怎么建设网站开发的背景和意义
  • 服务一流的做网站打开网站访问慢
  • phpcms做汽车网站国外工业产品设计网站
  • 学校门户网站建设必要性电子创意设计网站
  • 推荐几个看黄的网站东莞网站排名优化公司
  • 惠阳有做公司网站的吗鞍山网站制作
  • 南海网站建设多少钱视频网站如何做营销策划
  • 选择做网站销售的优势论文查重网站建设
  • angularjs的网站模板百度做网站的联系人
  • 美容设计网站建设北京建站的
  • linux下做网站网站模板制作与安装教程视频
  • 潍坊网站建设wfyckjdedecms网站地图模板怎么
  • 优购物官方网站直播创意网络营销案例
  • 网页超链接到别的网站404电商网站开发模块
  • 基于工作过程的商务网站建设:网页制作除了 wordpress
  • 营销型网站策划安徽通皖建设工程有限公司网站