【问题标题】:Difference between gcc "-Xlinker" and "-Wl," options?gcc“-Xlinker”和“-Wl”选项之间的区别?
【发布时间】:2016-11-09 06:12:00
【问题描述】:

根据GCC 6.1 manual on Link Options

-Wl,选项

将选项作为选项传递给链接器。如果选项包含逗号,则在逗号处将其拆分为多个选项。

-Xlinker 选项

将选项作为选项传递给链接器。您可以使用它来提供 GCC 无法识别的特定于系统的链接器选项。

为什么我们需要 2 个?

添加 1

同样,为什么我们需要 -Xassembler-Wa 来提供汇编程序选项?

引用GCC 6.1 doc on Assembler Options:

-Wa,选项

将选项作为选项传递给汇编程序。如果选项包含逗号,则在逗号处将其拆分为多个选项。

-Xassembler 选项

将选项作为选项传递给汇编器。您可以使用它来提供 GCC 无法识别的特定于系统的汇编器选项。

【问题讨论】:

    标签: gcc linker gnu ld gnu-assembler


    【解决方案1】:

    区别在于下面的粗体字

    -Wl,选项

    将选项作为选项传递给链接器。如果 option 包含逗号,则在逗号处将其拆分为多个选项。 您可以使用此语法将参数传递给选项。 例如,-Wl,-Map,output.map 将 -Map output.map 传递给链接器。使用 GNU 链接器时,您也可以使用 -Wl,-Map=output.map 获得相同的效果。

    -Xlinker 选项

    将选项作为选项传递给链接器。您可以使用它来提供 GCC 无法识别的特定于系统的链接器选项。 如果要传递带有单独参数的选项,则必须使用 -Xlinker 两次,一次用于选项,一次用于参数。例如,要传递 -assert 定义,您必须编写 -Xlinker -assert -Xlinker 定义。 编写 -Xlinker“-assert 定义”是行不通的,因为这会将整个字符串作为单个参数传递,这不是链接器所期望的。

    使用 GNU 链接器时,使用 option=value 语法将参数传递给链接器选项通常比单独的参数更方便。例如,您可以指定 -Xlinker -Map=output.map 而不是 -Xlinker -Map -Xlinker output.map。其他链接器可能不支持命令行选项的这种语法。

    由于向后兼容性,我猜还有 2 个类似的功能。

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 2011-11-05
      • 2013-12-30
      • 2013-06-10
      • 2011-05-31
      • 2015-04-01
      • 2013-11-10
      • 2010-12-03
      • 1970-01-01
      相关资源
      最近更新 更多