美文网首页
objc4-781 源码编译 & 调试

objc4-781 源码编译 & 调试

作者: malgee | 来源:发表于2020-09-07 21:03 被阅读0次

    准备工作:下载objc4相关依赖库


    image.png

    objc4相关依赖库:Libc,dyld,libauto,libclosure,libdispatch,libpthread,xnu.这些依赖库中包含了Runtime源码库中需要的一些文件.

    问题一:unable to find sdk 'macosx.internal

    image.png
    • 选择target -> objc -> Build Settings -> Base SDK -> 选择macOS

    注意:target中的 objc 和 obc-trampolines都需要更改

    image.png

    问题二:'sys/reason.h' file not found

    image.png
    缺失的文件可以通过以下三种方式获取:
    • 通过 GitHub 源码 下载,路径在 objc-756.2编译资料/xnu-4903.241.1/bsd/sys/reason.h
    • 或者大家可以通过 Apple sourcexnu-4903.241.1/bsd/sys/reason.h 路径自行下载
    • 还可以通过谷歌中输入reason.h site:opensource.apple.com 定向检索
    step 1. 在根目录创建了一个 MGCommon 文件, 创建 sys 文件, 把 reason.h 文件加入进去,如下图
    image.png
    step 2. 然后设置文件检索路径:选择 target -> objc -> Build Settings,在工程的 Header Search Paths 中添加搜索路径 $(SRCROOT)/MGCommon
    image.png

    其他的文件找不到,处理和上面👆处理一样

    'mach-o/dyld_priv.h' file not found
    'os/lock_private.h' file not found
    'os/base_private.h' file not found
    'pthread/tsd_private.h' file not found
    'System/machine/cpu_capabilities.h' file not found
    'os/tsd.h' file not found
    'pthread/spinlock_private.h' file not found
    'System/pthread_machdep.h' file not found
    'CrashReporterClient.h' file not found
    'objc-shared-cache.h' file not found
    '_simple.h' file not found
    'Block_private.h' file not found
    

    'mach-o/dyld_priv.h' file not found

    • MGCommon文件夹下创建math-o文件夹,
    • 找到文件:dyld-732.8 -> include -> mach-o -> dyld_priv.h , 将dyld_priv.h拷贝到 MGCommon /mach-o/文件夹下,如下图
      image.png
    • 然后在dyld_priv.h 文件顶部加入一下宏:
    #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
    

    'os/lock_private.h' file not found
    'os/base_private.h' file not found

    • MGCommon下创建 os文件夹
    • 找到libplatform-220 --> private --> os -->lock_private.h 、base_private.h,并将ock_private.h 、base_private.h文件拷贝至MGCommon/os 文件下

    'pthread/tsd_private.h' file not found
    'pthread/spinlock_private.h' file not found

    • MGCommon下创建 pthread 文件
    • 找到路径 libpthread-416.11.1 -> private ->tsd_private.h、spinlock_private.h,并tsd_private.h、spinlock_private.h拷贝到 MGCommon /pthread文件下

    'System/machine/cpu_capabilities.h' file not found

    • MGCommon下创建 System文件夹
    • 然后在System文件夹下创建 machine文件夹
    • 找到路径:xnu6153.11.26 -> osfmk -> machine -> cpu_capabilities.h, 并将cpu_capabilities.h拷贝到MGCommon/System/machine文件夹下
      image.png

    os/tsd.h' file not found

    • 找到路径:xnu6153.11.26 ->libsyscall -> os ->tsd.h, 并将tsd.h拷贝到MGCommon/os 文件下
      image.png

    'System/pthread_machdep.h' file not found

    • 这里下载 pthread_machdep.h文件,然后将pthread_machdep.h 拷贝到:MGCommon/System文件夹下。

    注:在最新版的macOS 10.15中最新版下载的libc中没有这个h文件,需要下载Libc-583版本

    image.png

    'CrashReporterClient.h' file not found

    • 这个文件在 Libc-825.24找到,路径为Libc-825.24/include/CrashReporterClient.h
    • CrashReporterClient.h 拷贝到 MGCommon文件夹下
    • 需要在 Build Settings -> Preprocessor Macros中加入:LIBC_NO_LIBCRASHREPORTERCLIENT

    'objc-shared-cache.h' file not found

    • 找到路径:dyld-733.6 -> include -> objc-shared-cache.h, 将objc-shared-cache.h拷贝到 MGCommon文件夹下

    '_simple.h' file not found

    • 找到路径:libplatform-220 -> private -> _simple.h, 将 _simple.h 拷贝到 MGCommon 文件夹下

    相关文章

      网友评论

          本文标题:objc4-781 源码编译 & 调试

          本文链接:https://www.haomeiwen.com/subject/qgnkektx.html