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

How to print symbol list for .so file in OSX?

本文关键字:文件 符号 列表 so 打印 OSX      更新时间:2023-10-16

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

我试过了

nm -gU lib.so

但是,没有打印任何内容。

我不能使用 otool,因为它不是目标文件,并且 toelf 在 OSX 上不存在。如何获取交易品种信息?

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

正如所问,

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

尝试使用从nm管道传输c++filt

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

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

-p --无参数 拆解函数名称时,不要显示 函数的参数。

-我 --不啰嗦 不要在拆除的中包含实现详细信息(如果有) 输出。

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

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

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

手册页:符号

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/nm.1.html Nm 显示参数列表中每个对象文件的名称列表(符号表)。 如果参数是 将生成一个存档,即存档中每个对象文件的列表。 文件可以是以下形式 libx.a(x.o),在这种情况下,仅列出来自目标文件该成员的符号。 (括号- 必须引用这些内容才能得到壳牌。 如果未给出文件,则列出 a.out 中的符号。