zoukankan      html  css  js  c++  java
  • 符号和符号解析

    从入口函数开始解析

    2. 符号解析

    (1)符号解析过程

    E:将被合并以组成可执行文件的所有目标文件集合
    U:当前所有未解析的引用符号的集合
    D:当前所有定义符号的集合

    ① 开始E、U、D为空,首先扫描main.o,把它加入E, 同时把myfun1加入U,main加入D。
    ② 接着扫描到 mylib.a,将U中所有符号(本例中为myfunc1)与 mylib.a中所有目标模块(myproc1.o和myproc2.o )依次匹配,发现在myproc1.o中定义了myfunc1 ,故myproc1.o加入E,myfunc1从U转移到D。在 myproc1.o中发现还有未解析符号printf,将其加到 U。
    ③ 不断在mylib.a的各模块上进行迭代以匹配U中的符号,直到U、D都不再变化。
    ④ 此时U中只有一个未解析符号printf,而D中有main和myfunc1。因为模块 myproc2.o没有被加入E中,因而它被丢弃。
    ⑤ 接着,扫描默认的库文件libc.a,发现其目标模块printf.o定义了 printf,于是printf也从U移到D,并将 printf.o加入E,同时把它定义的所有符号 加入D,而所有未解析符号加入U。
     处理完libc.a时,U一定是空的。
    ————————————————
    版权声明:本文为CSDN博主「WuDL.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/baidu_41667019/article/details/84789564

    ------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。
  • 相关阅读:
    audio_policy.conf说明(翻译)
    Qt
    linux C
    Linux C
    Linux C
    Qt
    Qt
    JSON
    JSON
    Qt
  • 原文地址:https://www.cnblogs.com/feng9exe/p/14920647.html
Copyright © 2011-2022 走看看