什么是链接器脚本?

链接器脚本

链接定位是系统级软件开发过程中必不可少的一部分,嵌入式软件开发均属于系统级开发,绝大部分嵌入式软件都涉及到链接定位脚本文件;链接定位脚本使得我们的目标代码组织更加灵活。

脚本的构成:

1.      段

一个可执行程序通常包括:代码段:存放代码的地方

数据段:存放初始化之后的全局变量

Bss段:存放未初始化的全局变量

同样,在用于链接这个程序的链接器脚本中,就会反应这几个段的信息。

2.      起始链接地址

3.      对齐

4.      变量

5.      代码段首文件

例:

SECTIONS{

(table). = 0x30000000; //起始地址为30000000

//代码段

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

.text :

{

Start.o(.text)    //设置的代码段首文件(CPU初始化)

*(.text)         //*代表全部文件

}

//数据段

. = ALIGN(4);

.data :

{

*(.data)

}

//Bss段

. = ALIGN(4);

Bss_start = . ;    //变量

.bss :

{

*(.bss)

}

Bss_end = . ;

}

时间: 2024-12-26 18:05:07

什么是链接器脚本?的相关文章

编写链接器脚本

一个链接器脚本里面有三个段:代码段,数据段,bss段. 除了段的信息,一个链接器脚本还应该包括: 1.规定起始链接地址. 2.指明对齐方式. 3.还可以设置变量. 4.规定哪个文件时代码首文件. 下面敲得是一段完整的链接器脚本的文件.代码首文件是指链接的时候把哪一个文件放在最前面. 使用方法为: 来自为知笔记(Wiz)

链接器脚本

SECTIONS { . = 0x30008000;    //指定链接地址 . = ALIGN(4);        //指定对齐方式4字节对齐 .text :    //代码段 { led.o (.text)          //设置代码段首文件 *(.text)               //表示所有文件的代码段 }   . = ALIGN(4); .rodata : {*(.rodata)} . = ALIGN(4); .data : //数据段 { *(.data) ////表示所

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

4.链接器脚本

4.链接器脚本 一.体验: 首先先看一个例子:图1-1: 编译烧写的过程: main.c的截图: 可以看到在main函数中点亮了第一个盏灯: 图1-1 点灯 在这个例子中的gboot.lds的代码为: OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { ????. = 0x50008000; ???? ????. = ALIGN(4); ????.text : ????{ ????start.o (.text) //.text指明的是代码段,代码段里指定第一个执行

018链接器脚本

1.链接器脚本的神奇作用 通过使用不同的链接器脚本,不需要更改源代码,就可以实现不同的功能! 链接器脚本对程序的生成有着至关重要的作用! 2.链接器脚本--->段 一个可执行程序通常是由:代码段,数据段,bss段构成的. 同样,在用于链接这个程序的链接器脚本中,就会反映出这几个段的信息. 段的信息是由SECTIONS固定的标号指明链接器脚本最重要的信息是段: 代码段里面包含的是所有文件的代码: 数据段包含的是所有文件的数据: 最基本的框架如下: 3.链接器脚本--->设置起始链接地址 . =

[国嵌笔记][018][链接器脚本]

链接器脚本 一个可执行程序通常由:代码段.数据段.bss段构成.在用于链接这个程序的链接器脚本中,反应的是这几个段的信息. 创建链接器脚本 1.创建链接器脚本 vim led.lds 2.设置起始链接地址 . = 0x30008000 3.对其设置 . = ALIGN(4); arm处理器在访问数据的时候是以4字节对齐的方式访问的,所以在存储数据时以4字节对齐可以提高访问效率 4.使用变量 start_adr = .; 使用变量保存下来的地址可以在程序中使用 5.设置代码段的首文件 led.o(

lscript.ld 链接器脚本

sumary选项卡 lscript.ld是这个应用程序的链接器脚本. 这是实用的作为一个报告 看看内存是针相应用程序. 它也能够被编辑以改变应用程序的位置.双击Hello_Zynqàsrcà lscript. 如今ld.注意,窗体打开的图形视图 Summary选项卡的左下角. 我们将看看Source选项卡 堆栈大小 Source选项卡: 如今你看到的链接器脚本源码生成摘要.这 也可编辑视图. 假设你想要改变全部部分的芯片上的内存,你能够 做一个全球搜索和替换.是直接的,编辑链接器脚本以这样的方式

2016.4.6 链接器脚本文件的编写

1.链接器脚本文件的组成: 基本构成:段:代码段.text     数据段.data    bss段 .bss 起始链接地址 对齐 变量 代码段首文件 2.实例文件: SECTIONS{ . = 0x0;  //设置程序起始链接地址,=左右两边要空格 . = ALIGN(4);//,设置代码段四字节对齐,=左右两边要空格 .text ://冒号前要空格 { start.o(.text)//设置代码段首文件,CPU一上电就开始执行. *(.text) } . = ALIGN(4);//设置数据段四

007.链接器命令脚本LD文件教程(1)

开发人员如何指定一个二进制镜像文件的内部布局呢?可以传递给链接器一个链接描述文件,也成为链接器命令脚本.可以将这个特殊的文件看做一份构造二进制可执行镜像的"配方".下面代码中显示了U-Boot引导加载程序使用的链接器描述文件的部分内容. 该脚本从这里开始定义了二进制ELF镜像的输出段.它指示链接器将名为.resetvec的代码段放置在数据镜像的固定地址处,即地址0xFFFFFFFC.此外,它还指定这个段的剩余部分全部填充为1(0xffff).这是因为一个闪存的存储阵列在被擦除后内容全部