链接脚本之SECTIONS

SECTIONS基本的命令语法

SECTIONS
{
       ...
      secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
      { 
        contents 
      } >region :phdr =fill
      ...
}
  • 这么多参数中,只有secname 和 contents 是必须的
  • start :表示将某个段强制链接到的地址(放到哪里去运行)
  • AT(addr):实现存放地址和加载地址不一致的功能,AT表示在文件中存放的位置(下载时的存放位置),而在内存里呢,按照普通方式存储。
  • region:这个region就是前面说的MEMORY命令定义的位置信息。 

例如:

SECTIONS { 
  firtst    0x00000000 : { head.o init.o }  //第一段为head.o init.o
  second    0xB0004000 : AT(2048) { leds.o } //第二段leds.o放到2048位置处,链接到0xB0004000处运行
} 
. = 0x00000000;/*;从0x0位置开始*/
 . = ALIGN(4);/*代码以4字节对齐*/
 .text :
 {
  cpu/arm920t/start.o (.text) 
 
    /*代码的第一个代码部分*/  
  *(.text)
 
  /*下面依次为各个text段函数*/
 }
发布了137 篇原创文章 · 获赞 106 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/shenlong1356/article/details/104205892
今日推荐