Mach-O与Xcode编译环境配置

2021-02-25  本文已影响0人  Bepawbikvy
什么是Mach-O?

Mach-O(Mach Object)是macOS、iOS、iPadOS存储程序和库的文件格式。对应系统通过应用二进制接口(application binary interface,缩写为ABI)来运行该格式的文件。

Mach-O格式作为BSD系统的a.out格式的替代,它提供了更强的扩展性,并提升了符号表中信息的访问速度。Mach-O文件格式保存在编译过程和链接过程中产生的机器代码和数据,从而为静态链接及动态链接的代码提供单一文件格式。


可执行文件调用过程:
$ objdump --macho --private-headers /Users/bepa/Library/Developer/Xcode/DerivedData/LoginApp-dmjlwlualsxjekeluddaletddbxm/Build/Products/Debug-iphonesimulator/LoginApp.app/LoginApp 

可以看到大量的Load command

image.png
$ objdump --macho --private-headers /Users/bepa/Library/Developer/Xcode/DerivedData/LoginApp-dmjlwlualsxjekeluddaletddbxm/Build/Products/Debug-iphonesimulator/LoginApp.app/LoginApp | grep 'LC_MAIN' -A 3

Mach-O = 文件配置 + 二进制代码(header+二进制)

image.png

链接的本质就是把多个目标文件组合成一个文件

上一篇 下一篇

猜你喜欢

热点阅读