ios 开发

Mach-O文件

2022-12-16  本文已影响0人  iOS小洁

Mach-O文件

mach-o是存储程序和库文件的文件格式,对应系统通过二进制接口ABI来运行该文件。保存了在编译和链接过程中产生的机器代码和数据,从而为静态链接和动态链接的代码提供了单一文件格式

mach-o = 文件配置 + 二进制代码

Mach-O 文件是可读可写的

image-20221206152902873

__TEXT段:只读区域 包含可执⾏代码和常量数据。

__DATA段:读/写 包含初始化和未初始化数据和⼀些动态链接专属数据。

mach-o文件组成,有两部分::header 和data。

查看Mach-O文件信息命令

查看mach-header

查看 __TEXT

查看符号表

查看导出符号

查看间接符号表

查看重定位符号表

nm命令

nm -pa a.o
  1. -a: 显示符号表所有内容
  2. -g: 显示全局符号
  3. -p: 不排序,显示符号表本来的顺序
  4. -r: 逆转顺序
  5. -u: 显示未定义符号
  6. -m: 显示N_SECT类型的符号(Mach-O符号)

编译

iOS编译过程:

dyld加载流程

dyld(the dynamic link editor)是苹果的动态链接器,是苹果操作系统的重要组成部分,在app被编译打包成可执行文件格式的Mach-O文件后,交由dyld负责链接,加载程序

dyld链接流程:

  1. 加载libSystem
  2. Runtime向dyld注册回调函数
  3. 加载新的image
  4. 执行map_images、load_images
  5. Imageloader加载image。回到 3、4,直至加载完全
  6. 调用main函数
上一篇 下一篇

猜你喜欢

热点阅读