文档介绍:链接脚本文件语法详解
我们对每个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