有人可以简单地解释一下吗:
- Makefile 的重新链接意味着什么?
- 为什么会发生这种情况?
- 如何避免?
最佳答案
make
的一个主要功能是在 makefile
中指定依赖项(通常命名为 makefile
,但也可能有其他名称,例如 >MyRules.mk
),格式如下:
FileX: FileA FileB FileC Command to make FileX from FileA FileB FileC
鉴于此依赖性,如果 FileA
、FileB
或 FileC
中任何一个的修改时间晚于 的修改时间FileX
,然后make
将执行命令来制作新版本的FileX
。
常见的依赖规则表示目标文件依赖于 C 源文件和一些头文件,例如:
foo.o: foo.c foo.h project.h $(CC) -c foo.c
在大型项目的 makefile 中,规则和文件列表通常更加复杂,使用多个符号来传达命令、选项和文件列表。
另一个常见规则是从目标文件中创建可执行文件:
MyProgram: foo.o bar.o baz.o $(LD) -o $@ $^
在此上下文中,“重新链接”仅意味着 make 将执行命令以再次将对象链接到可执行文件。发生这种情况的原因可能是因为其中一个必备文件(目标文件,通常名称以 .o
结尾)比目标可执行文件新,或者因为 makefile 中的规则尚未正确写入表达依赖关系。
避免这种情况需要理解 make
及其规则和 makefile 的工作原理。
关于c++ - Makefile 中的 "relink"意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52502399/