这样就把foor(), bar()这两个函数给放在了最终elf文件里的.out_name这个section。
__attribute__((section(".sec_name")))
void foo(void) __attribute__((section(".in_name")));
void bar(void) __attribute__((section(".in_name")));
.out_name
{
*(.in_name)
}
从宏观上来看下这个链接脚本,这也是为什么可执行文件的内存布局先是代码段,接着数据段,再是bss段的原因,即链接脚本决定可执行文件的内存布局。
SECTIONS
{
.text : {
...
}
.data : {
...
}
.bss:{
...
}
}
当我們想要把 code 放到 0x10000,data 放到 0x8000000,以下就是符合我們要求的 linker script
SECTIONS
{
. = 0x10000;
.text :
{
*(.text)
}
. = 0x8000000;
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
}
来源:CSDN
作者:luckywang1103
链接:https://blog.csdn.net/luckywang1103/article/details/104064487