objc4-818.2源码编译遇到的问题

最近在尝试编译 objc 的源码,碰到的问题记录。

编译源码的过程,大致分为两步:

1.编译通过 objc target

1.添加一些源文件,在官网提供的其他源代码包里找,然后在 header search paths 里添加这些 源文件的路径即可
2.源代码的一些改动,比如添加一些宏定义,注释一些条件判断等等

网上有很多很详细的教程,举个 参考
https://juejin.cn/post/7042624465175314445

2.编译自己创建的 target

1.build phases -> dependencies 添加 objc 的依赖

  1. build settings ->enable harden runtime -> NO(其实此为默认值,不知道为什么教程都强调这一点)

注意,坑来了

常规的坑:
1.编译自己的 target 成功以后,出现了打在自己的 target里的断点断不住的问题,
修改 compile sources ,把 main.m 提到最上面,解决
2.打在源码里的断点断不住的问题,要在自己的 target 里面添加objc的依赖

但是我在添加了objc依赖的情况下,依然断不住源码里的断点,改了enable harden runtime 为 NO 也是不行
测了半天,把自己target的 macOS Deployment Target 改成macOS 10.12,成功断住了源码
原因猜测:是与xxCommon/mach/dyld_priv.h新添加的宏定义有关,只有10_11~10_14,而我当前的Xcode12.5.1 创建的命令行项目,该项默认设置了macOS 11.3

dyld_priv.h文件
自己创建的 target,该项初始值是 macOS 11.3

你可能感兴趣的:(objc4-818.2源码编译遇到的问题)