簡體   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