• 链接器脚本


    SECTIONS {  

      . = 0x30008000;    //指定链接地址

      . = ALIGN(4);        //指定对齐方式4字节对齐

      .text :    //代码段

      {  

      led.o (.text)          //设置代码段首文件

      *(.text)               //表示所有文件的代码段

      }

        . = ALIGN(4);  

      .rodata : {*(.rodata)} 

      . = ALIGN(4);  

      .data : //数据段

      {

      *(.data) ////表示所有文件的数据段

      }    

      . = ALIGN(4);  

      bss_start = .;  //变量,bss_start表示当前地址

      .bss :     //bss段

      {

      *(.bss)   //表示所有文件的bss段

      *(COMMON)

      }  

      bss_end = .; //变量,bss_end表示当前地址

    }

    以上是led.lds文件的内容,通常链接器脚本以lds为后缀名

    文件格式:

    SECTIONS { 

    }

    ----------------------------------

    . = 0x30008000;

    . = ALIGN(4);

    .text :

    上面这些内容要以table键开头(vi编辑器设置 :set tabstop=4)

    SECTIONS { 

      . = 0x30008000;

      . = ALIGN(4);

      .text :

    }

    -----------------------------------------------

    一个可执行文件通常由:代码段、数据段、bss段构成。

    .text: //代码段

    {

    *(.text)   //所有文件的代码段

    }

    .data: //数据段

    {

    *(.data)  //所有文件的数据段

    }

    .bss: //bss段

    {

    *(.bss) //所有文件的bss段

    }

    -----------------------------------------

    链接器脚本可以进行下面的设置:

    1、起始链接地址

     . = 0x30008000;
     
     . = ALIGN(4);
     .text :
     {
     led.o (.text)
     *(.text)
     }

    使用反汇编工具(其中led.bin是使用本链接器脚本生成的可执行文件)

    arm-linux-objdump -D -S led.bin >dump

    查看led.bin的起始地址

    2、对齐

    . = ALIGN(4); //设置为4字节对齐

    3、定义变量

    bss_end = .; //变量,bss_end表示当前地址

    4、设置代码段的首文件

      . = 0x30008000;
     
     . = ALIGN(4);
     .text :
     {
     led.o (.text)  //led.o即为这个代码段的首文件
     *(.text)
     }

  • 相关阅读:
    c++ 11 thread 初试
    java UDP聊天与文件传输
    iOS 基础类解析
    Hadoop HA高可用集群搭建(2.7.2)
    object-c 不定參数的遍历和原理
    9.4 返回更新后的行
    java面向接口编程
    Node.js开发入门—套接字(socket)编程
    shell脚本输出带颜色字体
    shell--read命令
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/4679011.html
Copyright © 2020-2023  润新知