Makefile“重新链接”是什么意思? [关闭]

问题描述 投票:-2回答:1

有人可以用简单的语言解释:

  1. Makefile重新链接是什么意思?
  2. 为什么会这样?
  3. 怎么避免呢?

c++ c makefile compilation gnu-make
1个回答
1
投票

make的一个主要特征是依赖关系在makefile(通常命名为makefile,但可能有其他名称,如MyRules.mk)中指定,形式如下:

FileX: FileA FileB FileC
    Command to make FileX from FileA FileB FileC

鉴于这种依赖性,如果任何FileAFileBFileC的修改时间晚于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如何工作的问题。

© www.soinside.com 2019 - 2024. All rights reserved.