繁体   English   中英

如何知道对象文件中符号的可见性

[英]How to know the visibility of a symbol in an object file

符号的可见性(来自 __ 属性 __(visibility("...")) 和 -fvisibility)可以从 so 文件中得知

nm -C lib.so

t 是隐藏的,T 是导出的(即默认值)。 但是如何直接从目标文件中获取这些信息呢?

nm -C lib.o

无论可见性如何,都将始终为非 C 静态符号打印 T。

可见性不同于符号是局部的还是全局的(这是小写/大写字母所描述的)。 隐藏符号仍然可以具有外部链接,即它不限于翻译单元。

我认为nm没有显示可见性的选项,但您可以使用

objdump -Ct lib.o

如果符号是隐藏的,它将显示属性.hidden

readelf -s lib.o

其中有一列可见性( DEFAULT / HIDDEN )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM