【问题标题】:Specifying section name for code in GCC为 GCC 中的代码指定部分名称
【发布时间】:2021-11-12 21:37:24
【问题描述】:

我知道 GCC 允许您使用 __attribute__((section(".mysection"))) 来定义函数以指定将代码放入的部分。我有一堆代码需要放在特定部分中,并且必须装饰每个部分相当乏味与此功能。有没有办法编译文件,同时在命令行上全局指定代码放在哪个部分?

【问题讨论】:

  • 这不是您问题的答案,但可以稍微简化您的生活。你可以有这样的东西:#define MYSECTION __attribute__((section(".mysection")))。然后你只需添加 MYSECTION 和原型而不是整个属性文本。
  • @TimF:我已经这样做了。

标签: gcc


【解决方案1】:

如果适合,您可以更改链接描述文件,将特定目标文件放入特定部分。

下面的例子是从this resource推断出来的

以下示例是一个完整的链接描述文件。它告诉链接器从文件all.o 中读取所有部分,并将它们放在从位置0x10000 开始的输出部分outputa 的开头。文件foo.o 中的所有部分.input1 紧跟在同一输出部分中。来自 foo.o 的所有部分 .input2 进入输出部分 outputb,然后是来自 foo1.o 的部分 .input1。任何文件中所有剩余的 .input1 和 .input2 部分都将写入输出部分 outputc

SECTIONS 
{
    outputa 0x10000 :
    {
       all.o
       foo.o (.input1)
    }

    outputb :
    {
       foo.o (.input2)
       foo1.o (.input1)
    }

    outputc :
    {
       *(.input1)
       *(.input2)
    }
}

因此,您可以做的是设计您的项目,将特定部分的所有功能隔离到一个目标文件中,该目标文件将被放入所需的部分。

【讨论】:

  • 太棒了。我不知道链接器脚本允许您指定它从中提取部分的目标文件。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 2018-08-08
  • 2013-02-11
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多