我知道GCC允许你使用__attribute__((section(".mysection")))
作为函数定义来指定放入代码的部分。我有一堆代码需要在特定的部分进行,而且相当繁琐。用这个装饰每个功能。有没有办法编译文件,同时在命令行全局指定代码放在哪个部分?
答案 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)
}
}
因此,您可以设计项目以将特定部分的所有功能隔离到将放入所需部分的目标文件中。