Makefile中文手册.pdf
在了解Makefile之前,我们首先要明白什么是makefile。Makefile是一种用于程序编译的脚本文件,它描述了整个程序编译和链接的过程,包括哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译等编译规则。在Unix/Linux系统中,makefile被广泛用于软件编译过程,特别是在C和C++语言开发中。Makefile的编写遵循特定的语法,能够让编译过程自动化,提高开发效率。对于大型项目,makefile编写的好坏在一定程度上反映了开发者的工程能力。 在Unix/Linux系统中,make命令用于执行Makefile文件中定义的编译规则。Make命令在执行时会检查Makefile文件来确定如何编译和链接程序。一个Makefile文件通常包含了目标(target)、依赖(dependencies)和命令(commands)三个基本要素。目标通常是需要生成的文件,依赖是生成目标所需的前提条件,命令则是用于创建或更新目标文件的shell命令。Makefile中的规则是告诉make命令当依赖文件比目标文件新,或者目标不存在时,应该如何执行相应的命令来创建或更新目标文件。 在使用Makefile时,一个常用的场景是利用make命令和Makefile来自动化编译和链接C/C++源代码。一般来说,源代码首先会被编译器编译成中间文件,即Object File,在Windows中通常扩展名为.obj,在Unix/Linux中通常扩展名为.o。之后,链接器会将这些中间文件链接生成最终的可执行文件。链接器工作时并不关心函数在哪个源文件中定义,只关心函数的中间目标文件。 在进行程序编译时,编译器会检查源代码的语法正确性以及函数与变量的声明正确性。如果函数未被声明,编译器通常会给出警告,但仍能生成Object File。然而,在链接阶段,链接器会尝试在所有Object File中寻找函数的实现,如果找不到,就会报出链接错误,如在Visual C++中常见的Link2001错误。为解决这一问题,需要指定正确的Object File。 GNU make是一个广泛使用的make工具,其版本3.80在RedHat Linux 8.0中得到支持。GNU make遵循IEEE 1003.2-1992标准(即POSIX.2标准)。在撰写Makefile时,通常需要对编译器和链接器的行为有一定了解,文档中默认使用的编译器是UNIX下的GCC和CC。 GNU make工具的内容丰富,文档中将主要介绍GNU make的使用方法。在具体编写Makefile时,会根据工程的具体需求来制定相应的规则,例如在示例工程中,包括了8个C文件和3个头文件,我们需要制定相应的编译和链接规则,如整个工程未编译过时,所有C文件都需要编译和链接;如果只有部分C文件被修改,只编译修改过的文件;如果头文件被修改,则需要重新编译所有引用了该头文件的C文件。编写Makefile时,需要对这些规则进行精确的定义,以保证整个编译过程的正确性和高效性。
剩余59页未读,继续阅读
- 粉丝: 12
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言中使用OpenGL和SDL实现3D动态圣诞树效果
- 保险费用数据集.zip
- python圣诞树代码动态3d
- Anaconda Python 数据处理与分析工具的安装与配置教程
- C语言编程实现控制台打印2D圣诞树
- 动态直方图均衡化技术在图像对比度增强中的应用研究-论文复现-含代码详细解释
- 电脑视觉检测机项目设备3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- DataOptionError解决办法.md
- 使用HTML和CSS创建静态圣诞树的代码实例
- NSConditionLockException如何解决.md
- KeyError.md
- 大宗商品价格数据集.zip
- 全球互联网使用数据集,互联网使用影响因素数据集,提供了各国互联网使用的全面概览
- ConcurrentModificationException(解决方案).md
- ReferenceError.md
- python通过overpass获取城市所有建筑物经纬度