我有一个.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
答案 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
来简化输出;删除输出所有内容。
答案 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中的符号。