链接器脚本

2019-07-13 23:44发布

链接器脚本构成:段、起始链接地址、对齐、变量、代码段首文件 
一个可执行程序通常由代码段,数据段,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处理器访问数据的方式有关。 设置代码段首文件:规定了程序运行时首先运行的代码