objc4-756源碼調(diào)試,解決報(bào)錯(cuò)問(wèn)題

一畏吓、下載objc4-756脊阴,編譯解決報(bào)錯(cuò)問(wèn)題

1、進(jìn)入源碼區(qū)亲雪,搜索objc4并下載 ?

https://opensource.apple.com/release/macos-10145.html

同時(shí)下載objc4相關(guān)依賴dyld跑揉、launchd锅睛、Libc埠巨、libauto、libclosure现拒、libdispatch辣垒、libplatform、libpthread印蔬、xnu勋桶。放在方便操作的文件夾,方便搜索查找侥猬。

2例驹、運(yùn)行工程編譯報(bào)錯(cuò)如下:

error: The i386 architecture is deprecated. You should update your ARCHS build setting to remove the i386 architecture. (in target ‘objc’)

error: The i386 architecture is deprecated. You should update your ARCHS build setting to remove the i386 architecture. (in target ‘objc-trampolines’)

解決方法:target-Build Settings -Architecture設(shè)置為Standard arcgutectures



3、解決問(wèn)題后編譯退唠,繼續(xù)報(bào)錯(cuò):


一看發(fā)現(xiàn)reason.h頭文件沒(méi)找到鹃锈,缺失依賴文件,在步驟1下載的文件中搜索sys/reason.h文件瞧预,加入即可屎债。我們需要?jiǎng)?chuàng)建一個(gè)include文件來(lái)存放這些缺失的依賴文件。

設(shè)置頭文件路徑:


搜索缺失文件:


添加頭文件后繼續(xù)編譯垢油,繼續(xù)添加缺失文件……

4盆驹、添加的過(guò)程中發(fā)現(xiàn)pthread_machdep.h在依賴中沒(méi)有,CrashReporterClient.h也沒(méi)有找到滩愁,也不知道在哪個(gè)庫(kù)躯喇,一臉懵逼,直接谷歌找到連接:

https://opensource.apple.com/source/Libc/Libc-825.24/pthreads/pthread_machdep.h

https://opensource.apple.com/source/Libc/Libc-825.26/include/CrashReporterClient.h

打開(kāi)連接復(fù)制源碼到新建文件惊楼,解決玖瘸,哭笑不得秸讹。最新的源碼居然缺少文件檀咙,還要在歷史版本庫(kù)找。

編譯后pthread_machdep.h文件報(bào)錯(cuò):

Typedef redefinition with different types (‘int’ vs ‘volatile OSSpinLock’ (aka 'volatile int’))

重復(fù)定義璃诀,注釋即可弧可。

編譯繼續(xù)報(bào)錯(cuò):

Static declaration of ‘_pthread_getspecific_direct’ follows non-static declaration

注釋掉pthread_machdep.h中所有的錯(cuò)誤信息。

5劣欢、編譯報(bào)錯(cuò):

Expected ','

extern bool dyld_program_minos_at_least(dyld_build_version_t version) __API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0), bridgeos(3.0));

直接注釋掉就行棕诵。繼續(xù)編譯,問(wèn)題繼續(xù)出現(xiàn)報(bào)錯(cuò):

Use of undeclared identifier 'DYLD_MACOSX_VERSION_10_14’

在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

問(wèn)題解決凿将。

6校套、接著步驟6編譯出現(xiàn):

’isa.h’ file not found

isa.h文件在工程runtime文件中復(fù)制粘貼到include文件下即可。


7牧抵、繼續(xù)編譯繼續(xù)報(bào)錯(cuò):’_simple.h’ file not found 搜索文件添加笛匙。

8侨把、編譯報(bào)錯(cuò):Use of undeclared identifier ‘CRGetCrashLogMessage’。

解決方法:target -> Build Settings -> Preprocessor Macros 添加LIBC_NO_LIBCRASHREPORTERCLIENT


9妹孙、編譯報(bào)錯(cuò):

clang? linker command failed with exit code 1 (use -v to see invocation)

no such file or directory: 'lCrashReporterClient’

解決方法:在 Build Settings -> Linking -> Other Linker Flags里刪掉"-lCrashReporterClient"(Debug和Release都刪了)


10秋柄、編譯報(bào)錯(cuò):

ld: can’t open order file: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/AppleInternal/OrderFiles/libobjc.order

clang: error: linker command failed with exit code 1 (use -v to see invocation)

解決方法: Build Settings->Linking->Order File 改成$(SRCROOT)/libobjc.order


11、編譯報(bào)錯(cuò):

Showing All Messages

/xcodebuild? SDK “macosx.internal” cannot be located.

/xcrun? unable to find utility “clang++”, not a developer tool or in PATH

解決方法:將Target->Build Phases->Run-Script(markgc)里的內(nèi)容macosx.internal改為macosx


12蠢正、編譯報(bào)錯(cuò):

error: no such public header file: '/tmp/objc.dst/usr/include/objc/ObjectiveC.apinotes’

解決方法:Target->Build Settings->Other Text-Based InstallAPI Flags里的內(nèi)容設(shè)為空骇笔;

把Text-Based InstallAPI Verification Model里的值改為Errors Only。


13嚣崭、編譯報(bào)錯(cuò)笨触,額…… 居然編譯通過(guò)了。

二有鹿、添加test Target


1旭旭、添加一個(gè)target取名為?objc-test


2、引入頭文件#import <objc/message.h>創(chuàng)建一個(gè)新類HBObject葱跋,繼承自NSObject類持寄。添加屬性,方法娱俺,并給屬性賦值稍味,調(diào)用方法。運(yùn)行如下:

#import <Foundation/Foundation.h>

#import <objc/message.h>

void hb_test_method(Class cla, SEL _cmd){

? ? NSLog(@"我這個(gè)添加的方法被調(diào)用了");

}

int main(int argc, const char * argv[]) {

? ? @autoreleasepool {

? ? ? ? Class HBObject = objc_allocateClassPair(objc_getClass("NSObject"), "HBObject", 0);

? ? ? ? class_addIvar(HBObject, "name", sizeof(id), log2(sizeof(id)), @encode(id));

? ? ? ? class_addMethod(HBObject, sel_registerName("hb_test_method"), (IMP)hb_test_method, "v@:");

? ? ? ? objc_registerClassPair(HBObject);

? ? ? ? id newObject = [[HBObject alloc]init];

? ? ? ? [newObject setValue:@"yahibo" forKey:@"name"];

? ? ? ? NSLog(@"name:%@",[newObject valueForKey:@"name"]);

? ? ? ? objc_msgSend(newObject,sel_registerName("hb_test_method"));

? ? }

? ? return 0;

}

至此完成了源碼調(diào)試荠卷,編譯通過(guò)模庐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市油宜,隨后出現(xiàn)的幾起案子掂碱,更是在濱河造成了極大的恐慌,老刑警劉巖慎冤,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疼燥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚁堤,警方通過(guò)查閱死者的電腦和手機(jī)醉者,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)披诗,“玉大人撬即,你說(shuō)我怎么就攤上這事〕识樱” “怎么了剥槐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宪摧。 經(jīng)常有香客問(wèn)我粒竖,道長(zhǎng)迈喉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任温圆,我火速辦了婚禮挨摸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岁歉。我一直安慰自己得运,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布锅移。 她就那樣靜靜地躺著熔掺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪非剃。 梳的紋絲不亂的頭發(fā)上置逻,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音备绽,去河邊找鬼券坞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肺素,可吹牛的內(nèi)容都是我干的恨锚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倍靡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼猴伶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起塌西,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤他挎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捡需,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體办桨,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年栖忠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了崔挖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸街。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庵寞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出薛匪,到底是詐尸還是另有隱情捐川,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布逸尖,位于F島的核電站古沥,受9級(jí)特大地震影響瘸右,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岩齿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一太颤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盹沈,春花似錦龄章、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至肃晚,卻和暖如春锚贱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背关串。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工拧廊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晋修。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓卦绣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親飞蚓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滤港,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 最新版本的Runtime源碼已經(jīng)出來(lái)了,是不急不可耐的想用用它呢趴拧?在這里我將一步步教大家如何編譯它溅漾,首先貼個(gè)自己的...
    逆風(fēng)g閱讀 2,418評(píng)論 1 10
  • 最新版本的Runtime源碼已經(jīng)出來(lái)了,是不急不可耐的想用用它呢著榴?在這里我將一步步教大家如何編譯它添履,首先貼個(gè)自己的...
    Cooci_和諧學(xué)習(xí)_不急不躁閱讀 3,721評(píng)論 8 19
  • OC的一個(gè)主要特性Runtime運(yùn)行時(shí)特性,在日常開(kāi)發(fā)中我們使用到的都是不可見(jiàn)的脑又,還好官方提供了Runtime(o...
    yahibo閱讀 1,422評(píng)論 7 6
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,692評(píng)論 0 3
  • 愛(ài)像氫氣球 最后一道防線 就是美麗天空下那道天窗 飛出去擁抱藍(lán)天 或是守望寧?kù)o 最后都被命運(yùn)安排
    遇安哲閱讀 176評(píng)論 0 2