博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Linux基础】为什么要学Makefile
阅读量:4282 次
发布时间:2019-05-27

本文共 714 字,大约阅读时间需要 2 分钟。

到此为止,读者已经了解了如何在Linux 下使用编辑器编写代码,如何使用Gcc把代码编译成可执行文件,还学习了如何使用Gdb 来调试程序,那么,所有的工作看似已经完成了,为什么还需要Make这个工程管理器呢?
所谓工程管理器,顾名思义,是指管理较多的文件的。读者可以试想一下,有一个上百个代码文件构成的项目,如果其中只有一个或少数几个文件进行了修改的话,按照之前所学的Gcc 编译工具,就不得不把这所有的文件重新编译一遍,因为编译器并不知道哪些文件是最近更新的,而只知道需要包含这些文件才能把源代码编译成可执行文件,于是,程序员就不能不再重新输入数目如此庞大的文件名以完成最后的编译工作。
但是,请读者仔细回想一下本书所阐述的编译过程,编译过程是分为编译、汇编、链接不同阶段的,其中编译阶段仅检查语法错误以及函数与变量的声明是否正确声明了,在链接阶段则主要完成是函数链接和全局变量的链接。因此,那些没有改动的源代码根本不需要重新编译,而只要把它们重新链接进去就可以了。所以,人们就希望有一个工程管理器能够自动识别更新了的文件代码,同时又不需要重复输入冗长的命令行,这样,Make工程管理器也就应运而生了。
实际上,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件的时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。用户只需要编写一次简单的编译语句就可以了。它大大提高了实际项目的工作效率,而且几乎所有Linux 下的项目编程均会涉及它,希望读者能够认真学习本节内容。
本文转载于,【Linux基础】为什么要学Makefile
(出处: )
你可能感兴趣的文章
OK6410A 开发板 (八) 27 linux-5.11 OK6410A 进程角度 linux TCB 的分析
查看>>
OK6410A 开发板 (八) 28 linux-5.11 OK6410A 进程角度 fork的分析
查看>>
OK6410A 开发板 (八) 28 linux-5.11 OK6410A 进程之间的区别
查看>>
OK6410A 开发板 (八) 29 linux-5.11 OK6410A 主要内核线程解析
查看>>
OK6410A 开发板 (八) 30 linux-5.11 OK6410A 进程相关的寄存器
查看>>
OK6410A 开发板 (八) 31 linux-5.11 OK6410A 感知linux的内存管理
查看>>
OK6410A 开发板 (八) 32 linux-5.11 OK6410A 从内存角度简略分析整个启动过程
查看>>
OK6410A 开发板 (八) 33 linux-5.11 OK6410A 内存管理第一阶段
查看>>
OK6410A 开发板 (八) 34 linux-5.11 OK6410A 内存管理第二阶段
查看>>
OK6410A 开发板 (八) 35 linux-5.11 OK6410A 内存管理第三阶段
查看>>
OK6410A 开发板 (八) 36 linux-5.11 OK6410A 内存管理第四阶段
查看>>
OK6410A 开发板 (八) 37 linux-5.11 OK6410A 内存管理第五阶段
查看>>
OK6410A 开发板 (八) 38 linux-5.11 OK6410A 为什么需要这么多内存管理器
查看>>
OK6410A 开发板 (八) 39 linux-5.11 OK6410A memblock 的 alloc 和 free
查看>>
OK6410A 开发板 (八) 40 linux-5.11 OK6410A buddy 的 alloc 和 free
查看>>
OK6410A 开发板 (八) 41 linux-5.11 OK6410A slab 的 alloc 和 free
查看>>
OK6410A 开发板 (八) 42 linux-5.11 OK6410A vmalloc 的 alloc 和 free
查看>>
OK6410A 开发板 (八) 43 linux-5.11 OK6410A memblock 的 消费者
查看>>
OK6410A 开发板 (八) 44 linux-5.11 OK6410A buddy 的 消费者
查看>>
OK6410A 开发板 (八) 46 linux-5.11 OK6410A vmalloc 的 消费者
查看>>