在GCC中指定代码的节名称

时间:2016-06-30 10:41:43

标签: gcc

我知道GCC允许你使用__attribute__((section(".mysection")))作为函数定义来指定放入代码的部分。我有一堆代码需要在特定的部分进行,而且相当繁琐。用这个装饰每个功能。有没有办法编译文件,同时在命令行全局指定代码放在哪个部分?

1 个答案:

答案 0 :(得分:2)

如果它适合你可以使用链接器脚本来将特定的目标文件放入特定的部分。

以下示例是从this resource

推断出来的
  

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

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

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

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

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