【问题标题】:Difference between LDFLAGS and ldflags-yLDFLAGS 和 ldflags-y 的区别
【发布时间】:2019-11-19 11:56:04
【问题描述】:

kbuild 文件说:

ldflags-y... [仅适用于分配它们的 kbuild makefile...[用于] 在递归构建期间发生的所有 ld 调用。

同时

LDFLAGS... [用于] 链接器的所有调用。

我看不出它们之间有什么区别,给定一个 Makefile m(我们输入 make m

  • 假设LDFLAGS := x,因为它适用于链接器的所有调用,那么在从make m 开始的任何构建会话中调用的所有ld 都具有x 的值LDFLAGS
  • 假设ldflags-y := y,因为如果适用于ld的所有递归调用,那么所有调用的ld(由从make m开始的任何构建会话)对于LDFLAGS也具有y的值

这个解释正确吗?

【问题讨论】:

  • 您引用的文档已经解释了这两者之间的区别,所以不,它们没有定义相同的东西。但这似乎太明显了,所以也许你可以改写这个问题来澄清你真正想知道的是什么?
  • @JohnBollinger 谢谢,我已经改写了这个问题。

标签: makefile linux-kernel kernel-module kbuild ldflags


【解决方案1】:

来自 reddit 用户的 help 澄清了区别:实际上 ldflags-y 适用于 ld 调用发生在降序构建中,但不适用于当前 Makefile 的构建。简而言之,LDFLAGS 定义了顶部,然后降序构建可以使用 ldflags-y 自定义此值。

【讨论】:

  • 我不确定你是否得到它。你说的对我来说听起来不太对。
  • 对不起,我误解了文档。
【解决方案2】:

[仅适用于分配它们的 kbuild makefile

意味着在给定的 makefile 中由该变量定义的链接标志仅用于出现在同一 makefile 中的规则中。它们不是从父 makefile 继承的,也不会传输到由其他 makefile 控制的 sub-makes。

[用于]递归构建期间发生的所有 ld 调用。

这是关于该设施的一般声明,而不是关于通过该设施的任何特定用途指定的特定标志。它说您可以在任何 kbuild makefile 中使用ldflags-y 变量,并期望看到文档中描述的行为——直接出现在同一个 makefile 中的规则中的链接器调用将使用这些标志,但它们不会自动传达到其他目录中的子makes。

另一方面,这...

LDFLAGS... [用于] 链接器的所有调用。

... 出现在架构 makefile 的文档中。如文档中所述,这些要点是定义适合整体构建的标志和(基本上)其中的所有内容。这个变量应该only在这样的makefile中定义,并且引用说以这种方式定义的链接器标志用于构建期间的所有链接器运行,无论相应的规则出现在哪个makefile中(包括, 特别是在与架构 makefile 不在同一树中的目录中)。

文档继续说ldflags-y 可用于进一步的自定义,您应该表明两者都应用于链接器运行。仔细阅读两行之间的内容,您应该期望(全局)LDFLAGS 出现在链接器命令中比(本地)ldflags-y 更早。

我看不出它们之间有什么区别,给定一个 Makefile m(我们 输入 make m)

  • 假设 LDFLAGS := x,因为它适用于链接器的所有调用,然后在任何构建会话中调用的所有 ld 从 使 m 具有 LDFLAGS 的值 x

是和不是。一个通用的 kbuild makefile m不应该LDFLAGS 提供定义。那只属于适当的架构makefile。目前还不清楚如果 kbuild makefile 这样做会发生什么,但我怀疑它会级联到 sub-makes。

此外,如果为 kbuild 配置了子树,您不应该直接尝试make 子树。该系统不是为此而设计的。

  • 假设 ldflags-y := y ,因为如果适用于 ld 的所有递归调用,则所有 ld 都会被调用(由任何构建会话开始 从 make m) 对于 LDFLAGS 也有 y 值

没有。使用ldflags-y 变量提供本地链接标志自定义的能力适用于所有kbuild makefile。特定 makefile 以这种方式提供的特定标志不会级联到 sub-makes。

【讨论】:

  • 谢谢。这是一个很好的答案,可以澄清问题的每个角落。
猜你喜欢
  • 2012-02-14
  • 2015-02-23
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多