链接器lds文件简介

lds后缀的文件是一个linker script,是一个链接器脚本文件。它用来描述链接器要如何链接生成一个目标执行文件,一般我们在编译C语言程序时,都不会创建lds文件,那是因为libc中已经暗含了链接文件。如果我们编译一个汇编文件,那么没有加入libc库,那么就需要创建一个lds文件并且传递给ld链接器来生成可执行elf文件。

OUTPUT_FORMAT("elf32­littlearm", "elf32­littlearm", "elf32­littlearm")   ;指定输出可执行文件是elf 格式,32位ARM 指令,小端
OUTPUT_ARCH(arm)                                                         ;指定输出可执行文件的平台为ARM
ENTRY(_start)                                                            ;指定入口地址为_start标号所在的位置.

SECTIONS
{
    . = 0x00000000 ; 定位器定位到从0x0位置
    . = ALIGN(4)   ; 代码以4字节对齐
    .text: {
        start.o (.text)
        *(.text)
    }
    . = ALIGN(4)
    .rodata : { *(.rodata) }
    . = ALIGN(4);
    .data   : { *(.data) }
    . = ALIGN(4);
    .bss : {
        __bss_start = .;
        *(.bss)
        __bss_end = .;
    };
    . = ALIGN(4);
    _end = .;
}

解释:

  • OUTPUT_FORMAT指定输出文件格式

  • OUTPUT_ARCH指定可执行文件的平台

  • ENTRY指定开始运行点

  • *(.text) 这里的通配符表示所有文件

  • . = 0x00000000 表示定位器定位到0地址

  • . = ALIGN(4) 表示定位器定位到下一个4字节对齐的地址点

  • __bss_start = .; 定义__bss_start为当前所在的地址

你可能感兴趣的:(编译)