【问题标题】:What is the purpose of having 'attr' in linker scripts在链接器脚本中使用“attr”的目的是什么
【发布时间】:2023-12-26 06:04:02
【问题描述】:

在链接描述文件中使用“attr”的目的是什么。我看到允许的字段是“ALIRWX”。链接器手册 [1]:ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html#SEC16 没有解释如果未提及会发生什么。举例来说,如果我不将该部分标记为“X”并将其留空,会发生什么。同样适用于“只读”部分。

【问题讨论】:

    标签: gcc ld linker-scripts


    【解决方案1】:

    内存属性并不是为了强制任何东西,而是为了让ld 了解您的目标环境。你告诉它哪个内存区域可用于什么目的,以帮助它决定事情必须去哪里。

    例如如果您的硬件可以抑制特定内存区域的程序执行(或通过设计来抑制它,就像在真正的哈佛架构中一样),您将省略“X”来告诉 ld 它不能期望从那里执行代码。

    如果您在SECTIONS 分配中省略(可选)>region 语句,ld 将根据您的定义分配最合适的内存区域。

    【讨论】: