(libstdc++库的使用只是一个示例,希望此方案能为大家解决其他问题带来思路)
一、背景
由于苹果废弃了libstdc++库,因此在Xcode10 和Xcode11升级时会发生找不到库的情况。为防止今后升级时libstdc++拷贝也无法使用,因此需要提前摸清58APP中到底有哪些库使用了libstdc++。
二、方案
1、通过linkmap文件获取到libstdc++编号,【14137】。
2、根据编号,提取该编号所使用到的符号,即在58APP中用到了哪些libstdc++函数。
但是libstdc++库与libc++的函数符号存在一定的重复,因此还需要提取libc++库的全部符号,将libstdc++库中包含的libc++的符号全部剔除。剩余部分就是三方库必须要调用的libstdc++函数。
通过文本编辑器打开libc++.tbd 即可找到libc++库的物理路径(以libstdc++作为示例)
打印libc++的所有符号,将来自14137文件的符号集合中,剔除libc++的符号,其余符号为纯libstdc++符号:
3、遍历所有的三方库,并打印三方库的符号。
4、搜索三方库的符号,如果符号包含libstdc++函数,则说明三方库使用到了libstdc++。
三、结果
/BaiduMapAPI_Base
BaiduMap/BaiduMapAPI_Map.framework/BaiduMapAPI_Map
/BaiduPanoSDK