Makefile 学习的重要性

Makefile在整个项目工程管理和程序的编译链接过程中,都扮演了一个非常重要的角色,是linux/Unix环境下开发必备技能,也是系统架构师、项目经理的核心技能。掌握了Makefile,会让你对底层软件的构造系统、程序的编译过程有一个更深的理解。

掌握了Makefile的基本原理,然后跟Windows下的IDE进行比较,你会发现,它们的工作原理也是大同小异,是相通的:

当你在C-Free或者VC++6.0环境下,通过工程管理器、资源管理器类似的窗口,往项目中添加源文件时,在底层会自动生成对应的Makefile类似的文件。当你点击编译或运行按钮时,IDE会根据这个Makefile文件去编译程序。不同的IDE,对应的Makefile文件名、文件格式可能有所差异,比如VC++6.0使用的是Nmake,但原理都是一样的:通过Makefile,我们可以构建编译一个可执行文件a.out需要的源文件。根据这个依赖关系,make工具就可以分别调用gcc命令分别将每个源文件编译成对应的目标文件,然后将它们链接成最后的可执行文件:a.out

会不会写Makefile,是侧面可以看出一个人是否具有完成大型项目工程的能力。如果你是在Linux下进行C/C++开发,掌握Makefile可能让你更深地去理解项目,去掌控整个项目的构建和维护。

Makefile也是一个研究开源项目的利器。很多开源项目可能文档不完整,而Makefile就是开源项目的地图,从Makefile入手,可以让你快速窥探整个开源项目的框架和概貌,让你深入代码而不至于迷路。

综上所述,如果你是一名Linux下的开发工程师、嵌入式工程师、内核驱动开发工程师,掌握Makefile是一门必备技能。它和git、vim一样,掌握了这个“Linux三剑客”会让你的工作事半功倍、更加高效。

《Makefile工程实践》视频教程,一线开发工程师独家录制,网上首家讲解Makefile的实战课程。从零开始,教你一步一步编写一个工程项目的Makefile,支持使用第三方静态库、动态库,支持指定模块或目录编译生成静态库、动态库,赠送企业级的Makefile模板,学完即可拿来使用,投入项目开发实战,具备独立开展项目开发和管理的能力。详情请点击淘宝链接:Linux三剑客