« Home | 幾個監看/改變Linux系統的記憶體/Process/CPU使用有關的指令 » | 如何自已compiler gcc 2.95.3 (在Fedora 4用gcc 4.0測試過) » | 如何每次自動載入8139too.ko » | 幾個常用的embedded Web Server » | uCLinux的起源-第一個uClinux Project » | hdparm用來取得或設定硬碟的參數 » | 幾個專門支援從USB Boot的Linux Package » | Google的Linux風格首頁 » | Google.com Search技巧 » | 消費者原生內容 Consumer-Generated Content » 

2005/10/13 

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

About me

  • I'm Martin's blog 馬汀的部落格
  • From 中壢市, 桃園縣, Taiwan
  • -----BEGIN GEEK CODE BLOCK----- Version: 3.1 Comment: For info see http://www.geekcode.com GC/CS/CC/E/IT/TW d- s a C++++ L++++ P+ L++++ E--- W+++ N++ o+ K- w+++ O- M- V- PS+ PE++ Y+ PGP+ t 5- X++ R- tv- b+++ DI+ D-- G e+++ h+ r+ y+ z? ------END GEEK CODE BLOCK------ /**************************** 旅行是我生命的動力 它的樂趣從計劃旅行開始 我樂於分享旅行及Linux Kernel上的每一件事. ****************************/
My profile