GCC Linker Script
Friday, October 14, 2005
10/13/2005 7:59:46 PM
GCC Linker Script
Q:很多人在compiler linxu kernel 時會發現x.lds的檔案,例如vmlinux.lds/bootloader.lds,它有什麼做用呢?
A:lds是一種 Linker Script,它可以指定link後的Memory layout
例如SECTIONS是一種用來描述memory layout的commmand
以下表示 所有的code都要載入到0x10000
data要從0x8000000開始
bss要放在data之後
SECTIONS
{
. = 0x10000; //.為目前位址
.text : { *(.text) } //所有object file中的 .text都擺到text
. = 0x8000000; //目前位址移到0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
註:
.text是程式段
.data是已初使化的段
.bss是未初使化的段
你可以使用
#readelf -a hello 來看看你自已的程式
Ref. http://www.delorie.com/gnu/docs/binutils/ld.html#SEC_Top
10/13/2005 7:59:46 PM
GCC Linker Script
Q:很多人在compiler linxu kernel 時會發現x.lds的檔案,例如vmlinux.lds/bootloader.lds,它有什麼做用呢?
A:lds是一種 Linker Script,它可以指定link後的Memory layout
例如SECTIONS是一種用來描述memory layout的commmand
以下表示 所有的code都要載入到0x10000
data要從0x8000000開始
bss要放在data之後
SECTIONS
{
. = 0x10000; //.為目前位址
.text : { *(.text) } //所有object file中的 .text都擺到text
. = 0x8000000; //目前位址移到0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
註:
.text是程式段
.data是已初使化的段
.bss是未初使化的段
你可以使用
#readelf -a hello 來看看你自已的程式
Ref. http://www.delorie.com/gnu/docs/binutils/ld.html#SEC_Top