链接描述文件中 *(.data)、*(.data*) 和 *(.data.*) 之间的区别

Difference between *(.data), *(.data*) and *(.data.*) in linker script

只是想知道这些结构之间有什么区别(对于 textdatarodatabss 等)在链接描述文件中:

.data :
{
    *(.data)
}


.data :
{
    *(.data*)
}


.data :
{
    *(.data.*)
}

在所有情况下,我们从所有目标文件中收集 数据 部分,但细节决定成败。

快速测试显示map文件中的地址不同,进而影响可执行文件的大小。

我试图在 ld documentation 中查找信息,但一无所获(或者只是遗漏了)。

我猜应该是很简单的东西(所谓obvious)。

任何想法将不胜感激。

在任何可能使用特定文件或部分名称的地方,您也可以使用通配符模式。

它像常规模式一样工作

  • *(.data) - .data 部分,示例: .data
  • *(.data*)- .data* 部分,示例: .dataTEST
  • *(.data.*) - .data.* 部分,示例: .data.TEST

Find more info here