Runtime objc4-750.1编译

最新版本的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 注释或者删除。

第五次次运行:报如下错误

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编译

你可能感兴趣的:(Runtime objc4-750.1编译)