编译objc4-818.2源码

730 阅读1分钟

编译objc4-818.2源码

APP Source下载源码。下载完之后打开项目编译objc

  • unable to find sdk 'macosx.internal' 错误 在 Build Settings -> Base SDK 选择macOS

  • 'sys/reason.h' file not found 错误是文件找不到

    大家可以通过 Apple source 在 xnu-4903.241.1/bsd/sys/reason.h 路径自行下载,把找到的文件加入到工程里面。然后选择 target -> objc -> Build Settings 在工程的 Header Serach Paths 中添加搜索路径 $(SRCROOT)/JCCommon 文件补漏情况

WeChata971614ba4f1d13cd3ffae9c8f615b1c.png

  • 'CrashReporterClient.h' file not found 需要在 Build Settings -> Preprocessor Macros 中加入:LIBC_NO_LIBCRASHREPORTERCLIENT

  • 'os/feature_private.h' file not found 注释掉部分报错代码

  • 'objc-bp-assist.h' file not found 注释掉头文件

  • 'Cambria/Cambria.h' file not found 注释头文件

  • '_static_assert' declared as an array with a negative size 注释这行代码

  • can't open order file: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/AppleInternal/OrderFiles/libobjc.order 选择 target -> objc -> Build Settings

    在工程的 Order File 中添加搜索路径$(SRCROOT)/libobjc.order

  • library not found for -lCrashReporterClient 选择 target -> objc -> Build SettingsOther Linker Flags 中删除 -lCrashReporterClient ( DebugRelease 都删了)

  • ld: library not found for -loah 选择 target -> objc -> Build SettingsOther Linker Flags 中删除 -loah ( DebugRelease 都删了)

  • /objc4-818.2/xcodebuild:1:1: SDK "macosx.internal" cannot be located. 选择 target -> objc -> Build Phases -> Run Script(markgc)把脚本文本 macosx.internal 改成 macosx

编译成功之后

编译调试
  • 新建一个Target JCObject

abe074566aea47a890ef4620c5004959_tplv-k3u1fbpfcp-zoom-1.png

  • 绑定二进制依赖关系

ba92ebaa2fb142e8b6e421765c10bb8d_tplv-k3u1fbpfcp-zoom-1.png

  • 运行代码进入源码,大家可以自由编译调试咯!