当我对共享库使用“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”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

cppcms - 共享库 - Linux

Rails:运行 wkhtmltopdf 时出错——(加载共享库时出错)

如何在 anaconda 中添加共享库?

如何使用自动工具构建静态和共享库?

使用g ++链接共享库

如何在 Eclipse CDT 的共享库项目中使用静态库