第11章ARM连接器11
1ARM映像文件ARM中各种源文件(包括汇编程序、C语言程序以及C++程序)经过ARM编译器编译后生成ELF格式的目标文件
这些目标文件和相应的C/C++运行时库经过ARM连接器处理后,生成ELF格式的映像文件(image)
这种ELF格式的映像文件可以被写入嵌入设备的ROM中
本节介绍这种ELF格式的映像文件的结构
1ARM映像文件的组成本小节介绍ARM映像文件的组成部分,以及这些组成部分的地址映射方式
ARM映像文件的组成部分2
ARM映像文件各组成部分的地址映射11
2ARM映像文件的入口点1
ARM映像文件中的两类入口点2
定义初始入口点3
普通入口点的用法11
3输入段的排序规则通常情况下,一个输出段中各输入段的排列顺序是由下面几个因素决定的
用户也可以通过连接选项-first和-last来改变这些规则
输入段的属性
输入段的名称
各输入段在连接命令行的输入段列表中的排列顺序
按照输入段的属性,其排列顺序如下所示:只读的代码段
只读的数据段
可读写的代码段
其他已经初始化的数据段
未初始化的数据
2ARM连接器介绍ARM开发包中包含了连接器armlink,它将编译得到的ELF格式的目标文件以及相关的C/C++运行时库进行连接,生成相应的结果文件
具体来说,armlink可以完成以下操作:连接编译后得到的目标文件和相应的C/C++运行时库,生成可执行的映像文件
将一些目标文件进行连接,生成一个新的目标文件,供将来进一步连接时使用,这成为部分连接
指定代码和数据在内存中的位置
生成被连接文件的调试信息和相互间的引用信息
2ARM连接器介绍Armlink在进行完全连接生成可执行的映像文件时执行下面的操作
解析输入的目标文件之间的符号引用关系
根据输入目标文件对C/C++函数的调用关系,从C/C++运行时库中提取