make命令工具如何确定哪写文件需要重新生成,伪目标的作用是什么

4. 请阐述静态链接库和动态链接库的异同点

静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。

动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。

动态链接库和静态链接库的相同点是它们都实现了代码的共享,不同点是静态链接库lib文件中的代码被包含exe文件中,该lib中不能再包含其他动态链接或者静态链接的库了。而动态链接库dll可以被调用的exe动态地“引用”和“卸载”,一个dll中可以包含其他动态链接库或者静态链接库。

5. 请阐述 Make 命令工具如何确定哪些文件需要重新生成,而哪些不需要生成

make会在当前目录下找名字叫“Makefile”或“makefile”的文件,makefile的规则是:

target : prerequisites

command

make先找到makefile中第一个目标文件(target),并把它作为最终的目标文件。

如果目标文件(target)不存在,或者目标文件以来的.o文件(prerequisites)的修改时间比目标文件更新的话,make就会执行后续定义的命令(command)来重新生成目标文件(target)。

如果目标文件依赖的.o(rerequisites)文件存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到就再根据那个规则生成.o文件。也就是说,make会一层一层地寻找文件依赖关系,直至最终编译出第一个目标文件。如果寻找过程中出现错误,比如最后被依赖的文件找不到,make会退出并报错。

6. 请简述 Make 中的伪目标的作用是什么

伪目标不是真正的文件名,而是一个操作的名字。

  • 使用伪目标可以避免Makefile中定义的执行命令的目标和实际文件名冲突。

  • 可以提高执行make时的效率。

将一个目标声明为伪目标,需要将其作为特殊目标.PHONY的依赖,make执行此规则时就不会查找隐含规则来创建此目标,提高了make的执行效率,也不必担心由于目标和文件名重名导致我们的期望失败。

posted @ 2021-03-13 17:53  Eunice呀  阅读(549)  评论(0)    收藏  举报