最近在嘗試編譯 objc 的源碼骤素,碰到的問(wèn)題記錄侠鳄。
編譯源碼的過(guò)程,大致分為兩步:
1.編譯通過(guò) 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
的依賴
- 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)斷不住的問(wèn)題,
修改 compile sources 宠互,把 main.m 提到最上面味榛,解決
2.打在源碼里的斷點(diǎn)斷不住的問(wè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