iOS二进制文件大小 - LinkMapFile分析

什么是Link Map File什么是快乐星球? 什么是Link Map File?链接映射文件,是Xcode生成的一个链接过程记录文件。Xcode在构建可执行文件的过程中,先对每个文件进行单独编译生成目标文件(.o文件),然后再将目标文件链接生成最终可执行文件,Link Map File就是记录链接过程中的信息文件,它用来描述可执行文件的具体结构,包含可执行文件代码段、数据段等地址分布信息有什么作用用来分析二进制大小组成,分析二进制类大小,可以找出体积增长缩小趋势原因等如何开启Xcode默认配置下是不生成Link Map file的,需要手动开启。具体开启方式为:在Xcode项目工程 Project -> Build Setting 中找到 Write Link Map File 选项,设置为Yes然后在 Path to Link Map File 选项中配置生成的文件存放位置例如:$(SRCROOT)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt文件结构生成的的Link Map File文件内容中
Link Map File 2021年02月26日 1,194次浏览

Mach-O二进制

Mach-O 是苹果公司自己维护的且独有的二进制格式,它是 Mach Object File Format 的简写,这是一个源于 NeXTSTEP 的项目。苹果官方对于 Mach-O 相关的文档很少,不过好在有开源的 [XNU](https://opensource.apple.com/source/xnu/xnu-6153.11.26/EXTERNAL_HEADERS/mach-o/) 源码,里面可以找到一些 Mach-O 相关的信息,如果感兴趣可以阅读一下
Mach-O 2019年12月14日 4,464次浏览

Autoreleasepool底层原理

Autoreleasepoolintmain(intargc,constchar*argv[]){@autoreleasepool{//}return0;}使用clangrewrite命令重写main.m文件:clang-rewrite-objcmain.m最终生成了一个main.cpp文件,进文件找到main()函数:intmain(intargc,constchar*argv[]){/*@autoreleasepool*/{__AtAutoreleasePool__autoreleasepool;}return0;}根据注释/*@autoreleasepool*/可以得知@autoreleasepool{}被转换了一个__AtAutoreleasePool类型的变量__autoreleasepool,在main.cpp文件里搜索一下__AtAutoreleasePool,可以得知__AtAutoreleasePool是一个结构体:struct__AtAutoreleasePool{__AtAutoreleasePool(){atautoreleasepoolobj=objc_aut
2018年05月07日 2,348次浏览