文章版权归原作者所有! (www.MegaEntry.com)
***************************************************** ARM映像文件――2 ***************************************************** 3输入段的排序规则连接器根据输入段的属性来组织这些输入段,具有相同属性的输入段被放到域中一段连续的空间中,组成一个输出段。在一个输出段中,各输入段的起始地址与 输出段的起始地址和该输出段中个输入段的排列顺序有关。通常情况下,一个输出段中个输入段的排列顺序由下面几个因素决定的。用户可以通过连接选项-first和-last来改变这些规则。**输入段的属性。**输入段的名称**各输入段在连接命令行的输入段列表中的排列顺序按照输入段的属性,其排列顺序如下所示:**只读的代码段**只读的数据段**可读写的代码段**其他已经初始化的数据段MegaEntry 网络社区与信息交流平台!
**未出世化的数据对于具有相同属性的输入段,按照其名称来排序。这是输入段名称是区分大小写的,按照其ASCII码顺序进行排序。对于具有相同属性和名城的输入段,按照其在输入段列表中的顺序进行排序。也就是说,几十个输入段的属性和名称保持不变,如果其在编译时,各输入段在输 入段列表中的排列顺序不同,生成的映像文件也将不同。可以通过连接选项-first和-last来改变这些规则。如果连接时使用了配置文件,可以在配置文件中通过伪属性FIRST和LAST达到相同的效果。连接选项-first和-last不能改变根据输入段进行排序的规则,它只能改变根据输入段名称和其在输入列表中的顺序的排序规则。也就是说,如果使用-first指定 一个输入段,只有该输入段所在的输出段位于运行时域的开始位置时,该输入段才能位于整个运行时域的开始位置。各个输入段排好顺序后,在确定各个输入段的起始地址之前,何以通过填充补丁是个输入段满足地址对齐的要求。