为 GCC 中的代码指定部分名称

Posted

技术标签:

【中文标题】为 GCC 中的代码指定部分名称【英文标题】:Specifying section name for code in GCC 【发布时间】:2016-06-30 10:41:43 【问题描述】:

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

【问题讨论】:

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

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

【讨论】:

太棒了。我不知道链接器脚本允许您指定它从中提取部分的目标文件。

以上是关于为 GCC 中的代码指定部分名称的主要内容,如果未能解决你的问题,请参考以下文章

gcc:自定义部分中的单独代码和数据

gcc 链接器 - 将存档中的所有目标文件映射到某个部分

在源代码中部分禁用 gcc 中的迂腐警告

在Visual Studio或GCC中使用表情符号作为c ++中的标识符名称

如何为 UITableView 中的每个单元格类别指定特定的部分名称

gcc asm