美文网首页
iOS强化 : 编译与链接

iOS强化 : 编译与链接

作者: 欧德尔丶胡 | 来源:发表于2021-03-30 11:34 被阅读0次
前言 :
  • 上一节学习了Mach-O 文件,对Mach-O有个大致的了解,今天来学习Mach-O可执行文件的生成过程 :编译与链接。
知识参考:

Mach-O文件生成过程

链接的本质 : 就是把多个⽬标⽂件组合成⼀个⽂件(Mach-O可执行文件)
目标文件 :通常.o文件被我们称之为目标文件;

1. 目标文件的生成过程:

大概步骤:

  • 将代码汇编化
  • 将符号进行归类;此时地址还没有虚拟化(没有生成虚拟内存地址)。对于外部导入符号,它的调用地址无法得知,需要将其放到重定位符号表中
  • 生成一个或多个.o目标文件
  • 此时链接器(llvm-ld)并没有被执⾏
2 . ⽣成Mach-O可执行文件的过程:
  • 多个目标文件合并
  • 符号表(包括重定位符号表)合并成一张表
  • 生成一个Mach-O可执行文件

静态链接

  • 代码经过编译链接最后分配虚拟内存地址生成可执行文件或动态库

动态链接:

  • 在运行时,由dyld动态加载

静态/动态链接

image
总结
  • 编译本质:将代码汇编化,并将符号进行归类。外部导入符号,放到重定位符号表。生成一个或多个.o目标文件
  • 链接本质:多个目标文件合并,符号表(包括重定位符号表)合并成一张表,生成一个Mach-O可执行文件

相关文章

网友评论

      本文标题:iOS强化 : 编译与链接

      本文链接:https://www.haomeiwen.com/subject/pkobhltx.html