Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序、库的标准格式
属于Mach-O格式的文件类型有
image.png
-
MH_OBJECT
目标文件(.o)
静态库文件(.a),静态库其实就是N个.o合并在一起 -
MH_EXECUTE:可执行文件
.app/xx -
MH_DYLIB:动态库文件
.dylib
.framework/xx -
MH_DYLINKER:动态链接编辑器
/usr/lib/dyld -
MH_DSYM:存储着二进制文件符号信息的文件
.dSYM/Contents/Resources/DWARF/xx(常用于分析APP的崩溃信息)
在Xcode中查看target的Mach-O类型
image.pngMach-O的基本结构
一个Mach-O文件包含3个主要区域
-
Header
文件类型、目标架构类型等 -
Load commands
描述文件在虚拟内存中的逻辑结构、布局 -
Raw segment data
在Load commands中定义的Segment的原始数据
image.png
dyld和Mach-O
dyld用于加载以下类型的Mach-O文件
- MH_EXECUTE
- MH_DYLIB
- MH_BUNDLE
- APP的可执行文件、动态库都是由dyld负责加载的
网友评论