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

yur*_*rko 7 c linker gcc ld

只是想知道链接描述文件中的此类结构(对于textdatarodatabss等)有什么区别:

.data :
{
    *(.data)
}


.data :
{
    *(.data*)
}


.data :
{
    *(.data.*)
}
Run Code Online (Sandbox Code Playgroud)

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

快速测试表明映射文件中的地址不同,进而影响可执行文件的大小。

我试图在ld 文档中查找信息,但什么也没找到(或者只是错过了)。

我想这应该是非常简单的事情(所谓的显而易见)。

任何想法都将受到高度赞赏。

Pep*_*lac 7

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

它像常规模式一样工作

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

在这里找到更多信息