Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件

目录

[一、make 工具和 makefile 文件](#一、make 工具和 makefile 文件)

[1.使用 make 工具](#1.使用 make 工具)

2.makefile文件


一、make 工具和 makefile 文件

前言:
前面我们在编写 linux 上第一个程序 hello world 的时候是直接使用 gcc 命令的。我们编译一个程序是非常的简单的,直接输入 gcc 然后跟上程序的名称再跟上指定生成程序的名称,就可以很轻松的编译出 hello这个可执行文件了。但是如果我们以后工作的时候要编译一个工程,这个工程里面有很多的源文件,这时候我们全部使用这个命令来编译那就非常的麻烦了,而且如果我们修改了一个源文件,那么我们使用命令来编译就要再次执行一遍这个过程,就会非常的耗时间。
如果有小伙伴以前学习过单片机,大家可以类比下单片机开发软件 keil 里面的单独编译和全部编译。单独编译是很省时间的,全部编译就会非常的耗时间,我们使用命令来编译就相当于我们单片机软件中的全部编译。为了解决编译一个工程非常繁琐这个问题,前人就给我们发明了编译辅助工具 make 工具,它的编译思路是非常简单的,它会在编译之前先比较哪个文件的时间发生了改变,如果说这个文件它修改的时间要晚于编译生成的文件,那么它就会按照要求重新构建这些文件,而不是说再浪费时间重新构建其他的文件了。假如在单片机上用 keil 写了一个 c 文件,这个工程里边别的文件没有改,那么我们就不用点全部编译,只要编译一下我们修改过的文件就可以了。make 也是这样的,只不过它比较聪明,它不用再人为
的去判断了,在编译之前会自动帮我们判断。

1.使用make工具

make 工具是编译辅助工具,用来解决使用命令编译工程非常繁琐的问题。
调用这个命令工具:我们在 windows 上编程使用 ide ,我们有图形界面,有相应的按钮,比如说 build或者 run 来编译。其实 make 这个编译辅助工具使用也是非常简单的,我们在控制台上直接输入 make 命令,它就会自动调用 make 工具。
我们来直接在这个目录下输入 make ,然后报错了,因为我没有告诉 make 这个工具它按照什么规则来编译我们的程序。如下图所示。

2.makefile文件

Makefile 就是描述了整个工程编译连接等规则的文件。我们在终端输入完 make 命令之后,调用 make工具,make 就会在当前目录按照文件名就会找 makefile 文件, Makefile 的命名必须是 makefile 或 Makefile , m 大写小写都是可以的。
我们刚才输入命令报错的原因是因为在当前目录下是没有 makefile 这个文件的,作者这里新建一个Makefile 文件,然后在当前目录下输入 make 命令,我输入完 make 命令,它就会调用 make 工具,make工具就会在当前目录下找到 makefile 这个文件,这里又报错了,因为作者这里创建的 makefile 文件,他虽然找到了但是里面是空的,因为没有包含任何的规则。如下图所示。

接下来先给大家写一个简单的来试一下,打开 makefile 文件,敲的时候一定要按 Tab 首行缩进,不能用空格,然后我们输入内容,保存退出,如下图所示。

然后输入 make ,在当前这个目录下,成功的生成 hello 这个可执行文件,执行一下,可以看到成功输出了,到这里我们的编译流程就已经讲完了,我们也成功的利用 makefile 文件和 make 工具,把 hello.c 编译成了 hello 可执行文件。如下图所示。

我们弄清楚了什么是 make 工具,怎么来调用 make 工具, makefile 又是什么,弄清楚了他们的关系后,后面我们再学习 makefile 语法和裸机编写 makefile 时,就非常的容易了。

相关推荐
Nan_Shu_61413 分钟前
学习:入门uniapp Vue3组合式API版本(17)
前端·vue.js·学习·uni-app
易ლ拉罐21 分钟前
【计算机网络】Socket网络编程
服务器·网络·计算机网络
大大大大肉包34 分钟前
linux中挂载磁盘和卸载
linux·运维·服务器
hunteritself43 分钟前
DeepSeek 论文夺冠,智谱开源 GLM-4.5,OpenAI 学习模式上线!| AI Weekly 7.28-8.3
人工智能·学习·chatgpt·开源·bug·powerpoint
止观止44 分钟前
Remix框架:高性能React全栈开发实战
前端·react.js·前端框架·remix
Dymc1 小时前
【计算机视觉与代码大模型全景解析:从理论基础到学习路线】
人工智能·学习·计算机视觉
萌萌哒草头将军1 小时前
🚀🚀🚀 深入探索 Node.js v22.18.0 新特性;默认支持运行 ts 文件了!
前端·typescript·node.js
lingggggaaaa1 小时前
小迪安全v2023学习笔记(五十讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全
安心不心安1 小时前
React ahooks——副作用类hooks之useThrottleFn
前端·javascript·react.js
秋田君1 小时前
Vue3 + WebSocket网页接入弹窗客服功能的完整实现
前端·javascript·websocket·网络协议·学习