为 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 中的代码指定部分名称的主要内容,如果未能解决你的问题,请参考以下文章
在Visual Studio或GCC中使用表情符号作为c ++中的标识符名称