最新版本的Runtime源码编译环境配置(写的不好,见谅)
当前环境
- mac OS 10.14
- Xcode 10.1
- objc4-750.1
首先给出我已编译好的objc4-750地址,可以直接使用。
Runtime 源码地址
-
苹果开源网站上可以下载到很多开源项目,可以看到当前最新mac OS系统为10.14.1,最新的Xcode版本为10,安装Xcode 10.0提示mac OS系统需要10.13.6:
image.png
-
经过查找 Runtime源码就是objc4文件,选择最新的mac OS 系统为10.14.1,
,在浏览器搜索中输入 objc4
image2.png
-
可以看到最新的objc4文件为objc4-750.1,点击右边的下载按钮可以下载压缩包:
image.png
-
也可以点进去在网页上查看某个文件的代码,大概结构如下图:
image4.png
-
此时显示的网页地址为:https://opensource.apple.com/source/objc4/objc4-750.1/
image5.png
-
去掉最后的
objc4-750.1/路径,进入网页地址https://opensource.apple.com/source/objc4/,可以看到以往objc4历史版本:
image6.png
-
这里将source替换为tarballs同样可以下载自己想要的objc4版本,如图:
image7.png
image8.png
Runtime 编译
准备工作、编译参考:objc4-750编译中runtime 编译部分
我下载的源码使用Xcode打开是下面这样的:
image9.png
其中
libojbc.A.dylib就是我们要编译的Runtime库,编译好之后我们可以添加个 Target用于测试Runtime源码。下面就是要解决bug了。
第一次运行报错:
image001.png
解决方法:
-
TARGETS -> objc -> Build Setting 删除左边的TARGETS 和下边的 i386 如图:
image002.png
image003.png
这个报错主要是文件确实问题。需要添加头文件
-
解决方法:1.添加 头文件
image004.png
image005.png
配置文件路径:TARGETS -> objc -> Build Setting 搜索 search。注意这里是添加到 System Header Search Paths
image006.png
第三次运行:
image007.png
解决方法:TARGETS -> objc -> Build Setting 搜索
prep,找到 Preprocessor Macros 添加 LIBC_NO_LIBCRASHREPORTERCLIENT
image008.png
第四次运行:报如下错误
image009.png
解决方法:将代码
#include <objc/objc-block-trampolines.h> 注释或者删除。
第五次次运行:报如下错误
image010.png
解决方法:TARGETS -> objc -> Build Setting 搜索
linking,找到 Other Linker Flags 删除 -lCrashReporterClient然后 然后找到
Order File 中的路径,改为 ${SRCROOT}/libobjc.order
image011.png
image013.png
第六次次运行:报如下错误:
image014.png
解决办法:
TARGETS -> objc -> Build Phases -> Run Script 删除
.internal 如图:
image015.png
然后运行:报如下错误:
image016.png
解决方法:TARGETS -> objc -> Build Settings -> 搜索 text 如图:
image017.png
image018.png
解决完之后 运行 当显示 Build Secceeded 时,我们就可以添加测试 TARGETS了 。
选择 objc -> TARGETS -> 添加 自己的TARGETS
image019.png
image020.png
021.png
022.png
024.png
此时我们就可以调试Runtime的源码了
文章引用自objc4-750编译













网友评论