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

作者: 皮拉夫大王在此 | 来源:发表于2019-09-25 16:23 被阅读0次

(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

相关文章

网友评论

    本文标题:如何检测哪些三方库用了libstdc++

    本文链接:https://www.haomeiwen.com/subject/annvuctx.html