2


标题已经描述了我的问题。
我找到了这篇文章,但它并没有完全回答我的问题。
在它的帮助下,我从nm得到了这个输出......

$nm -C -g -D ./libLoggingHandler.so 

000000cc A _DYNAMIC
...
000042e0 T write_str(char*, char const*, int*)
00005a78 T RingBuffer::WriteUnlock()
...
00005918 T TraceLines::GetItemSize()
...
         U SharedMemory::attach(int, void const*, int)
...
00003810 T TraceProfile::FindLineNr(int, int)
...
00002d40 T LoggingHandler::getLogLevel()
...
         U SharedResource::getSharedResourceKey(char const*, int)
...

哪些是导出的函数?我已经在这篇文章中找到了一个提示,“T”表示它正在被导出。但是,如果我在这里查看 nm 手册,它只会
显示 T - 该符号在文本(代码)部分中。
我的问题是:此输出是否为我提供了哪些函数是导出函数(或变量)的信息?
如果没有,我如何得到它?

问候,平谷

4

2 回答 2

0

作为附录,通常该 .so 文件只是指向真实文件的指针/链接,例如:

foo.so -> foo.so.1.5.1

确保它指向您认为它应该指向/链接的版本。安装可能会出错,这是一个很好的完整性检查。

于 2013-04-05T13:00:47.667 回答
0

我尝试使用 IDA 自己检查它,您可以在其中看到所有导出的函数和变量。似乎如果 nm 输出行标有“T”或“B”,则它是一个导出函数。
不确定这是否适用于每个 .so 文件,但只要没有其他人有更好的解决方案......
如果我错了,请纠正我。

问候平谷

于 2012-11-26T10:08:40.240 回答