iOS底层原理02 -- objc4-781源码编译&调试

2020-11-28  本文已影响0人  阿木小丸子

本文主要是通过将objc4-781的源码编译成功,然后在源码中进行调试,便于跟踪方法的底层实现流程

环境:
macOS Catalina 10.15.7
XCode 12.2
objc4-781

依赖文件下载:

其中除了其中 launchd-106.10 需要在Mac OS X 10.4.4下载,其他的均可以在最新的的版本macOS 10.15中检索到

一、首先下载源码https://opensource.apple.com/tarballs/objc4/,选择最新版本下载
二、编译源码

以下是源码报错问题及解决办法:

1、unable to find sdk 'macosx.internal'

选择 target -> objc -> Build Settings -> Base SDK -> 选择 macOS 【target中的 objc 和 obc-trampolines都需要更改】
2、文件找不到的报错问题
【1】'sys/reason.h' file not found
#define DYLD_MACOSX_VERSION_10_11 0x000A0B00
#define DYLD_MACOSX_VERSION_10_12 0x000A0C00
#define DYLD_MACOSX_VERSION_10_13 0x000A0D00
#define DYLD_MACOSX_VERSION_10_14 0x000A0E00

【5】'System/machine/cpu_capabilities.h' file not found

【8】'CrashReporterClient.h' file not found

3、libobjc.order 路径问题

can't open order file: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/AppleInternal/OrderFiles/libobjc.order

4、Xcode 脚本编译问题

/xcodebuild:1:1: SDK "macosx.internal" cannot be located.

接下来就可以编译调试了!

新建Target
新建WZPreson,在main中调用,进行源码调试
上一篇 下一篇

猜你喜欢

热点阅读