剥离的符号不是从字符串linux工具中隐藏的

时间:2015-06-19 16:04:37

标签: c linux shared-libraries stripping

我有一个带有符号剥离的共享库。使用已知方法/工具获取符号名称(例如nm -Dobjdumpreadelf等),我发现所有符号实际上都是隐藏的。

但是,如果我在共享库上运行strings linux工具,我可以看到其中一些符号暴露出来。我确保我不会在消息中打印任何这些符号,但它仍然以某种方式打印出我希望被剥离的符号。

所以,我的问题是,即使从linux中的strings命令行工具,我怎么能隐藏我的符号?任何帮助将不胜感激。

编辑: 我使用strip -strip--all隐藏静态符号,我还启用-fvisibility=hidden编译标志来隐藏不需要的动态符号。

1 个答案:

答案 0 :(得分:1)

取自man strings

  

说明

     

对于给定的每个文件,GNU strings打印至少4个字符长的可打印字符序列。

strings与您提到的工具(readelfobjdump等)之间的区别在于那些主要依赖于ELF对象中嵌入的DWARF信息,而strings {1}}实用程序从二进制数据输出 ANY 可打印序列(DWARF无关)。

如何在strings实用程序中隐藏我的符号: this可能会有所帮助。