ld链接脚本(*.lds)示例
程序员文章站
2022-07-12 10:55:07
...
.text 程序代码
.rodata 只读数据
.data 可读写且需要初始化数据
.bss 可读写的置零初始化数据
经典示例:https://gitee.com/linux-open-source/linux-2.4.0/blob/master/linux-2.4.0/arch/i386/vmlinux.lds
SECTION格式
section [address] [(type)] :
[AT(lma)] [ALIGN(section_align) | ALIGN_WITH_INPUT] [SUBALIGN(subsection_align)] [constraint]
示例
ENTRY(symbol)
SECTIONS
{
. = SIZEOF_HEADERS;
.interp :
{ *(.interp) } :text :interp
. = 0x10000;
.text :
{ head.o(.text); *(.text) }
//.text ALIGN(0x10) : { *(.text) }
//.text 0x10000: { *(.text) }
//.text { o1/*.o(.text); }
. = . + 0x100;
. = ALIGN(0x8000)
//variable = ALIGN(0x8000)
.rodata : { *(.rodata) }
.mdata 0x20000 :
AT ( ADDR (.text) + SIZEOF (.text) )
{ _data = . ; *(.data); _edata = . ; }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
示例
SECTIONS
{
.text :
{
*(.text)
} > REGION_TEXT
.rodata :
{
*(.rodata)
rodata_end = .;
} > REGION_RODATA
_bdata = (. + 3) & ~ 3;
.data : AT (rodata_end)
{
data_start = .;
*(.data)
} > REGION_DATA
data_size = SIZEOF(.data);
data_load_start = LOADADDR(.data);
.bss :
{
*(.bss)
} > REGION_BSS
}
示例
SECTIONS { ...
.data ALIGN(0x2000): {
*(.data)
variable = ALIGN(0x8000);
}
... }
上一篇: Grails 1.3发布,完全支持Groovy 1.7
下一篇: 备份脚本以及自动执行