MachO文件的介绍
常见的格式:
• 1.可执行文件
• 2.objcet
◦ .o 文件(目标文件)
◦ .a 静态库文件.其实就是N个.o文件的集合
• 3.DYLIB: 动态库文件
◦ dylib
◦ framework
• 4.动态连接器
• 5.DSYM(存放崩溃信息)
文件基本架构
文件架构可以分为三部分:1.Header(头部)、2.LoadCommands(加载命令)、3.Data(数据);
加载方法
1.点击MachOView工具的主菜单“File”中的“Open”选项便可加载IOS平台可执行文件,对应功能接入如下所示:
例如加载文件名为“Wechat”的静态库文件,加载成功之后显示的界面如下图所示:
上图界面出现表明Mach-O文件加载完毕。FatHeader是一个通用二进制文件。在左边窗口点击“Mach Header”选项,可以看到每个类的cpu架构信息、load commands数量 、load commandssize 、file type等信息。
2.也可以使用otool工具查看Macho文件 otool -f xxx
查看Fat文件
可以看到,fat文件只是对各种架构文件的组装,点开 “Fat Header”可以看到支持的架构,图中显示的支持ARM_V7 、ARM_V7S 、ARM_64 、i386 、 X86_64。
点开每一个Static Library 可以看到,和每一个单独的Static Library的信息一样。
拆分/整合二进制文件
瘦身/拆分
$ lipo xxx -thin armv7 -output macho_armv7 //xxx是app包的可执行文件
$ lipo xxx -thin armv64 -output macho_armv64
整合
$ lipo -create macho_armv7 macho_arm64 -output machO_v7_64