kavin8000 发表于 2011-12-31 21:31:51

ARM连接器学习总结

      ARM开发包中包含了连接器armlink,它将编译得到的ELF格式的目标文件以及相关的C/C++运行时库进行连接,生成相应的结果文件。具体来说,armlink可以完成以下操作:
    <1>连接编译后得到的目标文件和相应的C/C++运行时库,生成可执行的映像文件;
    <2>将一些目标文件进行连接,生成一个新的目标文件,供将来进一步连接时使用;
    <3>指定代码和数据在内存中的位置;
    <4>生成被连接文件的调试信息和相互间的引用信息;

    armlink在进行部分连接和完全连接生成可执行的映像文件时所进行的操作是不同的。下面分别介绍这两种情况。
    情况一:
    armlink在进行完全连接生成可执行的映像文件时执行下面的操作:
    <1>解析输入的目标文件之间的符号引用关系。
    <2>根据输入目标文件对C/C++函数的调用关系,从C/C++运行时库中提取相应模块。
    <3>将各个输入段排序,组成相应的输出端。
    <4>删除重复的调试信息段。
    <5>根据用户指定的分组和定位信息,建立映像文件的地址映射关系。
    <6>重定位(需要重定位的)值。
    <7>生成可执行的映像文件。
    情况二:
    armlink在进行部分连接生成新的目标文件时执行下面的操作。
    <1>删除重复的调试信息段。
    <2>最小化符号表的大小。
    <3>保留那些未被解析的符号。
    <4>生成新的目标文件

       这是我在看杜春雷的《ARM体系结构与编程》第12章时总结的知识,说是总结其实基本上是照抄。在这里写一下,只是为了加深印象,当然也希望对大家有所帮助。这里还有很多知识,我还不是很明白,以后慢慢琢磨透吧。

TQ_guoxixiao 发表于 2012-1-12 16:43:05

谢 谢 分 享
页: [1]
查看完整版本: ARM连接器学习总结