iOS-objc4-781源码编译配置流程

2020-10-31  本文已影响0人  JimmyCJJ

前言

本文详细地讲述编译苹果源码objc4-781 的过程,过程中会有很多的报错问题,由于每个版本的报错问题可能不一致,所以仅仅针对objc4-781 版本。
文末附有下载链接,如果想要配置好的工程,直接下载即可。

当前环境 xcode 12.0 ;macos 10.15 ; objc4-781
注意:该源码仅支持在xcode 12.0以下(包括12.0)编译

去苹果开源网站找到缺失的文件reason.h,选择对应版本,然后按照这样的下载格式下载
路径:https://opensource.apple.com/source/xnu/
下载格式:https://opensource.apple.com/tarballs/xnu/xnu-6153.81.5.tar.gz


然后在根目录下创建一个文件夹,例如我这里创建一个文件夹LostFile,然后再嵌套一个子文件夹sys,把reason.h文件拷贝到sys里面,然后还要链接文件的搜索路径:Build Setting->Header Search Paths->添加$(SRCROOT)/LostFile
Block_private.h // libclosure-76/Block_private.h
_simple.h // libplatform-220/private/_simple.h
restartable.h // xnu-6153.81.5/osfmk/kern/restartable.h
CrashReporterClient.h // Libc/Libc-825.40.1/include/CrashReporterClient.h
objc-shared-cache.h // dyld-750.6/include/objc-shared-cache.h
pthread_machdep.h // Libc/Libc-825.40.1/pthreads/pthread_machdep.h
cpu_capabilities.h // xnu-6153.81.5/osfmk/machine/cpu_capabilities.h
tsd_private.h // libpthread-416.40.3/private/tsd_private.h
spinlock_private.h // libpthread-416.40.3/private/spinlock_private.h
tsd.h // xnu-6153.81.5/libsyscall/os/tsd.h
lock_private.h // libplatform-220/private/os/lock_private.h
base_private.h // libplatform-220/private/os/base_private.h
dyld_priv.h // dyld-750.6/include/mach-o/dyld_priv.h
reason.h // xnu-6153.81.5/bsd/sys/reason.h

整个配置好的源码我已放上github,下载链接放在文末,其中缺失文件在
https://github.com/JimmyCJJ/objc4-781/tree/main/objc4-781/LostFile

#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

解决方法:选择 target ->Build Phases -> Run Script(markgc)
把脚本文本 macosx.internal 改成 macosx


正式调试源码

配置好的源码下载链接
https://github.com/JimmyCJJ/objc4-781


参考文章
揭秘NSRuntime源码编译
iOS-底层原理 03:objc4-781 源码编译 & 调试

上一篇下一篇

猜你喜欢

热点阅读