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三剑客”会让你的工作事半功倍、更加高效。