【Linux】Make和Makefile快速入门

简介: 【Linux】Make和Makefile快速入门

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c++,Python等

> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:熟练掌握Make和Makefile的使用

> 毒鸡汤:人生就像一条河,左岸是无法忘却的回忆,右岸是值得把握的青春,中岸是正在燃烧的面孔。

> 望小伙伴们点赞👍收藏✨加关注哟💕💕  



🌟前言

       不知道大家还记得我们写的进度条,里面就有们的makefile,在哪里面我们没有讲解,拿到这里我们深度解剖,也可以再次回顾我们的进度条,那我们话不多说,进入我们今天的主题----【Linux】Make和Makefile快速入门🤗🤗。



⭐浅谈Make和Makefile

什么是make

      linux中make是一个构建工具,用于自动化编译和构建软件项目。它的作用是允许开发人员管理和维护复杂的软件项目,自动化编译过程并生成可执行文件。软件项目通常由多个源代码文件和依赖项组成。每个文件都需要编译为目标文件,然后将这些目标文件链接在一起生成最终的可执行文件,使用make工具可以简化这个过程,因为它会根据一组规则自动检测并构建项目的不同部分。


什么是makefile

       在linux中,makefile是一个工程文件的编译规则,描述了整个工程的编译和链接等规则;其中包含了哪些文件需要编译,哪些文件不需要编译,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重建等等。


总结

简单的来讲:make是指令而Makefile是一个文件


⭐编写Makefile

编写一个Makefile能细节到空格一个也不能多也一个也不能少的地步。

这里我们先创建两个文件:

  • test.c:



  • Makefile:(makefile也可以)


我们这里编写test.c和Makefile:

  • Makefile:(makefile也可以)
test:test.c
  gcc test.c -o test
 
.PHONY:clean
clean:
  rm -f test


这里我们不讲解里面的内容,后面会详细介绍的😬😬,摁住大家躁动的心


注意事项:


  • makefile 的文件名必须是 makefile/Makefile,不能是其他名称,否则 make 识别不了
  • 依赖文件可以有多个,也可以没有
  • 依赖方法必须以 [Tab] 键开头,特别注意不能是四个空格


make原理

🌙make的使用

在Linux下,输入 make 命令后,make 会在当前目录下找寻名为 "Makefile/makefile" 的文件

如果找到,它会把文件中的第一个目标文件作为最终的目标文件



如果找不到,就打印提示信息。



🌙make的依赖性

    不知道大家还记得我们编译的过程中有四大步骤:预处理,编译,汇编,连接。这四个步骤严格按照make的依赖性的,一层又一层地去找文件的依赖关系,直到最终编译出最开始我们需要的目标文件。


咱们先上代码后分析:

test:test.o
  gcc test.o -o test
test.o:test.s
  gcc -c test.c -o test.o
test.s:test.i
  gcc -S test.i -o test.s
test.i:test.c
  gcc -E test.c -o test.i
 
.PHONY:clean
clean:
  rm -f test.i test.s test.o test


代码分析:



运行结果:



🌙文件清理

文件清理指令:

make clean


会用 .PHONY 将其设置为伪目标:

.PHONY:clean
clean:
  rm -f test.i test.s test.o test


运行结果:



注意事项:

🌙知识拓展

Makefile中还有一些自动化变量,常用的有下面这些:


image.png


🌟结束语

      今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。


目录
相关文章
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
730 2
|
7月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
392 0
|
Rust Ubuntu Java
[Linux工具] Makefile
Makefile是Linux环境下用于自动化编译和链接程序的配置文件,常用于简化大型项目的编译流程。通过定义目标文件、依赖文件及生成命令,Makefile能高效管理编译任务。它不仅适用于C语言项目,还可扩展到其他编程语言和非编程任务中。
[Linux工具] Makefile
|
11月前
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
804 20
|
11月前
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
272 16
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
716 18
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
331 2
|
Linux C++
Linux c/c++之makefile的基础使用
Linux下C/C++项目中makefile的基本使用,包括基础、进阶和高级用法,以及如何创建和使用makefile来自动化编译过程。
190 0
Linux c/c++之makefile的基础使用
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
404 0
|
Linux 开发工具 C语言
韦东山Linux教学视频中的makefile文件详细介绍
韦东山Linux教学视频中的makefile文件详细介绍
439 0