MachO文件的介紹
常見的格式:
? 1.可執(zhí)行文件
? 2.objcet
? .o 文件(目標(biāo)文件)
? .a 靜態(tài)庫文件.其實(shí)就是N個.o文件的集合
? 3.DYLIB: 動態(tài)庫文件
? dylib
? framework
? 4.動態(tài)連接器
? 5.DSYM(存放崩潰信息)
文件基本架構(gòu)
文件架構(gòu)可以分為三部分:1.Header(頭部)得问、2.LoadCommands(加載命令)琢蛤、3.Data(數(shù)據(jù))坷衍;
加載方法
1.點(diǎn)擊MachOView工具的主菜單“File”中的“Open”選項(xiàng)便可加載IOS平臺可執(zhí)行文件,對應(yīng)功能接入如下所示:
例如加載文件名為“Wechat”的靜態(tài)庫文件款慨,加載成功之后顯示的界面如下圖所示:
上圖界面出現(xiàn)表明Mach-O文件加載完畢。FatHeader是一個通用二進(jìn)制文件草雕。在左邊窗口點(diǎn)擊“Mach Header”選項(xiàng)涩嚣,可以看到每個類的cpu架構(gòu)信息、load commands數(shù)量 省核、load commandssize 稿辙、file type等信息。
2.也可以使用otool工具查看Macho文件 otool -f xxx
查看Fat文件
可以看到气忠,fat文件只是對各種架構(gòu)文件的組裝邻储,點(diǎn)開 “Fat Header”可以看到支持的架構(gòu),圖中顯示的支持ARM_V7 旧噪、ARM_V7S 芥备、ARM_64 、i386 舌菜、 X86_64萌壳。
點(diǎn)開每一個Static Library 可以看到,和每一個單獨(dú)的Static Library的信息一樣日月。
拆分/整合二進(jìn)制文件
瘦身/拆分
$ lipo xxx -thin armv7 -output macho_armv7 //xxx是app包的可執(zhí)行文件
$ lipo xxx -thin armv64 -output macho_armv64
整合
$ lipo -create macho_armv7 macho_arm64 -output machO_v7_64