配置运行objc4-750和使用

背景:
由于要看runtime的底层,自己下载了官方的源码(objc4-750.tar.gz),结果编译各种报错。😭😭😭

自己搭建好完整的项目github

下面是本人搭建的过程:
参考链接:
1.最新Runtime源码objc4-750编译
2.objc - 编译Runtime源码objc4-680

  • 准备工作

  • 下载objc4-750.tar.gz

  • 其他所需要的库(下载地址点我)

    objc4-33.png

  • 将所有下载的压缩包全部解压到一个文件夹(暂且定为libs,可以直接放在桌面哟)里面(待会儿用搜索来查找缺失的文件

  • Xcode打开<i>objc.xcodeproj</i>工程文件

  • 编译Objc

    • 问题1

      objc4-1.jpg

      • 解决
        objc4-2.jpg
    • 问题2

      objc4-3.png

      • 解决 首先在工程的根目录下创建include文件夹,再在该文件夹下创建一个sys文件夹(因为报错的就是#include<sys/reason.h>
        objc4-4.png
      • 在libs文件夹里面搜索reason.h,将其拖入sys文件夹里面
      • 在工程文件里面进行配置:($(SRCROOT)/include)
        objc4-5.png
    • 问题3

      objc4-6.png

      • 解决 类似问题2,创建文件夹、搜索文件、拖入文件
        objc4-7.png
    • 问题4

      objc4-8.png

      (类似问题2)

    • 问题5

      objc4-9.png

      (类似问题2)

    • 问题6

      objc4-10.png

      (类似问题2)

    • 问题7

      objc4-11.png

      删除了bridgeos(3.0)

    • 问题8

      objc4-12.png

      注意是machine/cpu_capabilities.h
      (类似问题2)

    • 问题9

      objc4-13.png

      注意是os/tsd.h(类似问题2)

    • 问题10

      objc4-14.png

      (类似问题2)

    • 问题11

      objc4-15.png

      objc4-16.png

      • 解决 出现了重复定义了 这里我是把pthread_machdep.h文件里面的给注释掉的(详见demo)
    • 问题10

      objc4-17.png

      注意是BlocksRuntime/Block_private.h(类似问题2)

    • 问题11

      objc4-18.png

      (类似问题2)

    • 问题12

      objc4-19.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
      
    • 问题13

      objc4-20.png

      • 解决(类似问题2:文件路径见下)
        objc4-21.png
    • 问题14

      objc4-22.png

      注意是private/_simple.h(类似问题2)

    • 问题15

      objc4-23.png

      • 解决:改一下工程配置文件:
        Build Settings->Preprocessor Macros(Debug & Release)加入:LIBC_NO_LIBCRASHREPORTERCLIENT


        objc4-35.png
    • 问题16

      objc4-24.png

      • 解决 改一下工程配置: Build Settings->Linking->Order File,改成$(SRCROOT)/libobjc.order
        objc4-25.png
    • 问题17

      objc4-26.png

      • 解决:在 Build Settings -> Linking -> Other Linker Flags里删掉"-lCrashReporterClient"(Debug和Release都删了)


        objc4-27.png
    • 问题18

      objc4-28.png

      • 解决把Target-objc的Build Phases->Run Script(markgc)里的内容macosx.internal改为macosx


        objc4-29.png
    • 问题19

      objc4-30.png

      • 解决把Target-objc的Build Settings->Other Text-Based InstallAPI Flags里的内容设为空,把Text-Based InstallAPI Verification Model里的值改为Errors Only


        objc4-31.png
objc4-32.png
  • 总的路径如下


    objc4-34.png

使用:

objc4-36.png

objc4-37.png

我们在自己建的工程 main.m 文件里

#import <Foundation/Foundation.h>
#import <objc/runtime.h>
#import <malloc/malloc.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSObject *obj = [[NSObject alloc] init];
        
        //获得NSObject实例对象的成员变量所占用的大小 >> 8
        NSLog(@"%zd", class_getInstanceSize([NSObject class]));
        
        //获得obj指针所指向内存的大小 >> 16
        //malloc_size(const void *ptr):Returns size of given ptr
        NSLog(@"%zd", malloc_size((__bridge const void *)obj));
    }
    return 0;
}

测试:激动人心的时刻

objc4-38.png


友情链接:
libmalloc-166.200.60之源码编译

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 1 dyld 1.1 dyld简介 在iOS系统中,几乎所有的程序都会用到动态库,而动态库在加载的时候都需要用d...
    Kevin_Junbaozi阅读 11,771评论 4 44
  • 前言 这个前言是真的写在走之前,没出行,先开始写下心情,机票已经买了,尽管退票保险也已经买了,感觉自己还是走在了一...
    霖临说阅读 806评论 0 50
  • 说过很多谎言的人,也过着真实的生活。 热恋时的分不开是真的,分手的走不下去是真的。 少年的踌躇满志是真的,中年的消...
    很好的阿轻阅读 442评论 0 1
  • 周六一大早我们就起来收拾东西,泳衣、水果、夜宵零食.....打扮好我们去小区门口的薄皮饺子吃完饭就出发了,小萝莉的...
    东方绯红阅读 764评论 0 0
  • ln: 你好吗?特别想你。今天早上醒来很早,并无要事。你知道,一定是迫不及待想见你,所以才醒那么早。 这几日,在魔...
    落魄书生阅读 577评论 1 25