链接器脚本

ARM 269浏览

链接器脚本构成:段、起始链接地址、对齐、变量、代码段首文件 
一个可执行程序通常由代码段,数据段,bss段构成。 
其中数据段存放的是初始化后的前期变量;bss段存放的是没有初始化的前期变量 

一个链接器脚本led.lds例子:

OUTPUT_ARCH(arm)                /*指定输出文件的平台体系是ARM*/
ENTRY(_start)                             /*指定可执行映像文件的起始段的段名是_start*/
SECTIONS {
    . = 0x30008000;                  /*设置起始链接地址,改变这个值,会使编译中得到的汇编代码中首地址的值改变*/
    . = ALIGN(4);                       /*对齐*/
    .text :
    {
    start.o (.text)                        /*代码段首文件*/
    *(.text)                                  /*代表所有文件的代码段*/
    }

    . = ALIGN(4);
    .data :
    {
    *(.data)                               /*代表所有文件的数据段*/
    }

    . = ALIGN(4);
    bss_start = .;                     /*变量,表示将当前地址赋值给bss_start*/
    .bss :
    {
    *(.bss)                                /*代表所有文件的bss段*/
    }
    bss_end = .;                     /*变量,表示将当前地址赋值给bss_end*/
}

数据对齐:0,4,8这些能整除4的地址是数据之间对齐的地址。存储数据时尽量做到数据之间的对齐,这有利于arm处理器的效率提高,这和arm处理器访问数据的方式有关。

设置代码段首文件:规定了程序运行时首先运行的代码