没有合适的资源?快使用搜索试试~ 我知道了~
首页关于gcc ld的链接脚本
关于gcc ld的链接脚本
14 下载量 66 浏览量
更新于2023-03-03
评论
收藏 43KB PDF 举报
arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^ 链接脚本的主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的文件一般都包含 text 段、 data 段等等。 SECTIONS{ . = 0X10000000; .text : //代码段 { start.o main.o *(.text) } .rodata ALIGN(4) : {*(.rodata*)} // 常量数据 ro: read only .data ALIGN(4) : { *(.data) }
资源详情
资源评论
资源推荐
关于关于gcc ld的链接脚本的链接脚本
arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^
链接脚本的主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的链接脚本的主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的
文件一般都包含文件一般都包含 text 段、段、 data 段等等。段等等。
SECTIONS{
. = 0X10000000;
.text : //代码段
{
start.o
main.o
*(.text)
}
.rodata ALIGN(4) : {*(.rodata*)} // 常量数据 ro: read only
.data ALIGN(4) : { *(.data) } //已被初始化为非零的全局变量
__bss_start = .;
.bss ALIGN(4) : { *(.bss) *(COMMON) } //没有被初始化 和 已经被初始化为0 的全局变量
__bss_end = .;
}
1、最简单的链接脚本可以只包含一个命令、最简单的链接脚本可以只包含一个命令“ SECTIONS”, 我们可以在这一个我们可以在这一个“ SECTIONS”里面来描述输出文件的内存布局。里面来描述输出文件的内存布局。
2、、“ .”在链接脚本里面叫做定位计数器,默认的定位计数器为在链接脚本里面叫做定位计数器,默认的定位计数器为 0。我们要求代码链接到以。我们要求代码链接到以 0X10000000 为起始地址的地方,为起始地址的地方,
因此这一行给因此这一行给“ .”赋值赋值0X10000000,表示以,表示以 0X10000000 开始,后面的文件或者段都会以开始,后面的文件或者段都会以 0X10000000 为起始地址开始链为起始地址开始链
接。接。
3、、“ .text”是段名,后面的冒号是语法要求,冒号后面的大括号里面可以填上要链接到是段名,后面的冒号是语法要求,冒号后面的大括号里面可以填上要链接到“ .text”这个段里面的所有文件,这个段里面的所有文件,“ *
(.text)”中的中的“ *”是通配符,表示所有输入文件的是通配符,表示所有输入文件的.text段都放到段都放到“ .text”中。中。
4、、ALIGN(4)表示表示 4 字节对齐。也就是说段字节对齐。也就是说段“ .data”的起始地址要能被的起始地址要能被 4 整除。整除。
5、设置链接到开始位置的文件为、设置链接到开始位置的文件为 start.o,因为,因为 start.o 里面包含着第一个要执行的指令,所以一定要链接到最开始的地方。里面包含着第一个要执行的指令,所以一定要链接到最开始的地方。
6、、“ __bss_start”和和“ __bss_end”是符号,这两个符号用来保存是符号,这两个符号用来保存.bss 段的起始地址和结束地址,这两行其实就是对这两个段的起始地址和结束地址,这两行其实就是对这两个
符号进行赋值,其值为定位符符号进行赋值,其值为定位符“ .”。。
7、我们需要手动对、我们需要手动对.bss 段的变量清零的,因此我们需要知道段的变量清零的,因此我们需要知道.bss 段的起始和结束地址,这样我们直接对这段内存赋段的起始和结束地址,这样我们直接对这段内存赋 0 即可即可
完成清零。通过第完成清零。通过第 11、、 13 行代码,行代码, .bss 段的起始地址和结束地址就保存在了段的起始地址和结束地址就保存在了“ __bss_start”和和“ __bss_end”中,我们就可中,我们就可
以直接在汇编或者以直接在汇编或者 C 文件里面使用这两个符号。文件里面使用这两个符号。
作者:River-D
weixin_38516804
- 粉丝: 5
- 资源: 930
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0