如何排查Linux共享对象libmtcrypto.so的代码膨胀原因?
排查Linux共享对象体积膨胀的方法及解决案例
排查体积膨胀的常用方法
如果遇到共享对象体积异常庞大的情况,可以通过以下工具定位原因:
- 用
size -A libmtcrypto.so查看文件各段的大小分布,快速判断是代码、数据还是调试信息占据主要空间。 - 用
nm --size-sort -S libmtcrypto.so按大小排序查看符号,能直观看到哪些库的符号占用空间最多。 - 用
objdump -h libmtcrypto.so分析各section的大小,重点关注.text(代码段)、.data(数据段)以及.debug_*(调试信息段)的占比。 - 用
readelf -S libmtcrypto.so查看段信息,同样可以快速识别调试相关段的体积占比。
本次案例的排查结果
编译生成的libmtcrypto.so(仅导出一个函数)初始体积达28MB,排查后发现是构建系统中添加了-g调试参数,导致文件包含大量调试符号。执行strip libmtcrypto.so移除调试信息后,文件体积降至5MB。后续将联系相关人员在发布版本的构建流程中移除-g参数,避免不必要的体积膨胀。
内容的提问来源于stack exchange,提问作者vengy
相关产品推荐
相关产品推荐

