如何检测哪些三方库用了libstdc++

(libstdc++库的使用只是一个示例,希望此方案能为大家解决其他问题带来思路)

一、背景

由于苹果废弃了libstdc++库,因此在Xcode10 和Xcode11升级时会发生找不到库的情况。为防止今后升级时libstdc++拷贝也无法使用,因此需要提前摸清58APP中到底有哪些库使用了libstdc++。

二、方案

1、通过linkmap文件获取到libstdc++编号,【14137】。

1.png

2、根据编号,提取该编号所使用到的符号,即在58APP中用到了哪些libstdc++函数。

2.png

但是libstdc++库与libc++的函数符号存在一定的重复,因此还需要提取libc++库的全部符号,将libstdc++库中包含的libc++的符号全部剔除。剩余部分就是三方库必须要调用的libstdc++函数。

通过文本编辑器打开libc++.tbd 即可找到libc++库的物理路径(以libstdc++作为示例)

3.png

打印libc++的所有符号,将来自14137文件的符号集合中,剔除libc++的符号,其余符号为纯libstdc++符号:

4.png

3、遍历所有的三方库,并打印三方库的符号。

5.png

4、搜索三方库的符号,如果符号包含libstdc++函数,则说明三方库使用到了libstdc++。

6.png

三、结果

/BaiduMapAPI_Base
BaiduMap/BaiduMapAPI_Map.framework/BaiduMapAPI_Map
/BaiduPanoSDK

四、参考代码

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容