链接脚本文件语法详解
我们对每个c或者汇编文件进行单独编译,但是不去连接, 的文件,,我们首先要考虑的如何组合起来;其次,;再者,我们最后生成的bin文件是要在硬件ALIGN(4) : {
*(.text)
}
.rodata ALIGN(4) : {
*(.rodata)
}
.data ALIGN(4) : {
*(.data)
}
.got ALIGN(4) : {
*(.got)
}
__boot_end = .;
.bss ALIGN(16) : {
bss_start = .;
*(.bss)
*(COMMON)
bss_end = .;
}
.comment ALIGN(16) : {
*(.comment)
}
stack_point = __boot_start + 0x00100000;
loader_size = __boot_end - __boot_start;
setup_size = setup_block_end - setup_block;
}
=============================
在SECTIONS命令中的类似于下面的描述结构就是输出段描述:
.start ALIGN(4) : {
*(.)
}
.start 为output section name,ALIGN(4)返回一个基于location counter(.)的4字节对齐的地址值。*(.)是输入段描述,*为通配符,。
源文件中所标识的section及其属性实际上就是对输入段的描述,:
.section .
.global _start
_start :
b start
arm-elf-ld - -o timer_elf header .o
。
,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。
:
SECTIONS {
...
secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
{ contents } >region :phdr =fill
...
}
secname和contents是必须的,其他的都是可选的。下面挑几个常用的看看:
1、secname:段名
2、conten
链接脚本文件语法详解 来自淘豆网www.taodocs.com转载请标明出处.