如何在OSX中打印.so文件的符号列表?

时间:2015-03-11 17:19:52

标签: c++ macos

我有一个.SO文件(注意,不是.a,而不是.dylib而不是.o),我需要在OSX上从中获取符号信息。

我试过了

nm -gU lib.so

然而,没有打印出来。

我不能使用otool因为它不是目标文件,并且OSX上不存在readelf。我如何获得符号信息?

请注意,我在另一个项目中使用此.so文件,并且有符号信息。我能够加载库,并从中引用函数。但是,我还没有在OSX上找到一个工具让我从中打印符号信息。

按照要求,

file lib.so

ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped

2 个答案:

答案 0 :(得分:0)

尝试使用来自c++filt的管道nm

nm lib.so | c++filt -p -i
  

c ++ filt - Demangle C ++和Java符号。

     

-p          --no-PARAMS              在解析函数名称时,不要显示类型              函数的参数。

     

-i          --no-详细              不要在demangled中包含实现细节(如果有的话)              输出

编辑:根据问题中提供的新( ARM )信息,请尝试改为使用symbols

symbols lib.so -arch arm | awk '{print $4}'

我使用awk来简化输出;删除输出所有内容。

Manual page : Symbols

答案 1 :(得分:0)

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/nm.1.html  Nm在参数列表中显示每个目标文件的名称列表(符号表)。如果是一个论点        存档,将生成存档中每个目标文件的列表。文件可以是形式        libx.a(x.o),在这种情况下,只列出来自目标文件成员的符号。 (paren-        必须通过shell引用这些论文。)如果没有给出文件,则列出a.out中的符号。