GNU链接脚本
来源:互联网 发布:太阁立志传5 mac版 编辑:程序博客网 时间:2024/05/17 04:46
主要以uboot中的i386的链接脚本为例子进行说明。ELF的格式不在这里赘述。
这里有两个关键的地址:运行地址(VMA)和加载地址(LMA)。前者指的是BIOS在哪个内存地址运行;后者指的是生成的目标文件所烧结到的flash芯片所占用的系统地址是什么。
链接脚本主要描述了最终ELF中各个段是如何排布的,以及各个段的地址,一个输出段的标准格式
默认的4个段是必须有的
- .text 代码
- .rodata 常量,例如字符串什么的
- .data 初始化的全局变量
- .bss 没有初始化的全局变量
段名字后面紧跟的是 vma ,也就是这个段在程序运行的时候的地址,例如
下面实例中用了两个指令 LOADADDR ,这个指令是用来求 lma 地址的! SIZEOF 求段的大小。例如LOADADDR(.text) 求出 .text 段的 lma,SIZEOF(.text) 求出 .text 段的大小。AT(LOADADDR(.rodata) + SIZEOF(.rodata)) 指定 .data段的lma在 .text段lma的结尾处!
还有一个指令 ADDR(.text) 这个是求vma的,不是求lma。下面实例中未用到,各位知晓即可。
问题:
-------------------------------------------------------------------------------------------------------------------
1.各输入文件的.text在目标文件中.text中的位置是如何确定的?我们是否可以新增一个段,在执行正式代码前,先执行我们自定义段中的代码,如果可以,如何实现?
2. 目标文件中的各个段,何时以及如何从LMA地址迁移到VMA地址,开始正常运行的?
- GNU链接脚本
- GNU 链接脚本浅析
- GNU链接脚本浅析
- gnu链接脚本解析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU ld链接脚本学习
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- GNU-ld链接脚本浅析
- Tokyocabinet/Tokyotyrant文档大合集
- 关于未来的家庭电脑
- MySQL NET包
- catalan数
- WSAEventSelect应用
- GNU链接脚本
- MATLAB命令
- 管理理念:为员工打造一个梦想
- VC中获取当前计算机中所有逻辑驱动器的数目和盘符
- 顺序栈
- SQL Server 连接字符串
- bfg
- 初学者关于接口编程的认识
- 明天