objc4-818.2源碼編譯遇到的問題

最近在嘗試編譯 objc 的源碼,碰到的問題記錄。

編譯源碼的過程,大致分為兩步:

1.編譯通過 objc target

1.添加一些源文件,在官網(wǎng)提供的其他源代碼包里找,然后在 header search paths 里添加這些 源文件的路徑即可
2.源代碼的一些改動(dòng),比如添加一些宏定義,注釋一些條件判斷等等

網(wǎng)上有很多很詳細(xì)的教程,舉個(gè)?? 參考
https://juejin.cn/post/7042624465175314445

2.編譯自己創(chuàng)建的 target

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

  1. build settings ->enable harden runtime -> NO(其實(shí)此為默認(rèn)值,不知道為什么教程都強(qiáng)調(diào)這一點(diǎn))

注意,坑來(lái)了

常規(guī)的坑:
1.編譯自己的 target 成功以后,出現(xiàn)了打在自己的 target里的斷點(diǎn)斷不住的問題,
修改 compile sources ,把 main.m 提到最上面,解決
2.打在源碼里的斷點(diǎn)斷不住的問題,要在自己的 target 里面添加objc的依賴

但是我在添加了objc依賴的情況下,依然斷不住源碼里的斷點(diǎn),改了enable harden runtime 為 NO 也是不行
測(cè)了半天,把自己target的 macOS Deployment Target 改成macOS 10.12,成功斷住了源碼
原因猜測(cè):是與xxCommon/mach/dyld_priv.h新添加的宏定義有關(guān),只有10_11~10_14,而我當(dāng)前的Xcode12.5.1 創(chuàng)建的命令行項(xiàng)目,該項(xiàng)默認(rèn)設(shè)置了macOS 11.3

dyld_priv.h文件
自己創(chuàng)建的 target,該項(xiàng)初始值是 macOS 11.3
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容