当我对共享库使用“file”命令时,“stripped, with debug_info”是啥意思?
Posted
技术标签:
【中文标题】当我对共享库使用“file”命令时,“stripped, with debug_info”是啥意思?【英文标题】:What's the meaning of "stripped, with debug_info" when I use "file" command for a shared library?当我对共享库使用“file”命令时,“stripped, with debug_info”是什么意思? 【发布时间】:2019-01-24 03:03:10 【问题描述】:当我在共享库上使用“文件”命令时:
file shared_library.so
显示
shared_library.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, stripped, with debug_info
"stripped" 表示被剥离。但我不明白为什么剥离的库仍然有“with debug_info”。
【问题讨论】:
"stripped"
表示共享对象(或任何编译对象)已被剥离其调试符号(通常使用strip -s object
)。 strip
删除调试符号导致更小的库、更快的加载时间等...通常您认为“已发布”代码受益于被剥离,而“调试”代码被剥离则没有意义。不是所有的东西总是被剥离,有很多选择,见strip(1) - Linux manual page
在应用程序或库中保留调试符号不会影响内存使用或性能。链接器不会将符号映射到内存中。另请参阅 GCC 邮件列表上的 How does the gcc -g option affect performance?。我认为发行版的条带可以减少磁盘大小。不关心符号的人不会支付存储成本。想要调试符号的人可以安装它们。
【参考方案1】:
但我不明白为什么剥离的库仍然有“with debug_info”。
这将是strip --only-keep-debug file
的效果。来自man strip:
--only-keep-debug
剥离文件,删除不会被 --strip-debug 剥离的任何部分的内容 并保持调试部分完好无损。在 ELF 文件中,这会保留输出中的所有音符部分。
...
【讨论】:
以上是关于当我对共享库使用“file”命令时,“stripped, with debug_info”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章