从共享库中提取导出的函数(ubuntu)

时间:2012-11-24 21:39:47

标签: shared-libraries


标题已经描述了我的问题。
我找到了这个post,但它并没有完全回答我的问题 在它的帮助下,我从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)
...

哪些是导出的函数? 我已经在这个post中找到了一个提示,“T”表示它正在导出。但是,如果我检查nm手册here,它只是说了 T - 符号位于文本(代码)部分。
我的问题是:这个输出是否给出了哪些函数是导出函数(或变量)的信息? 如果没有,我怎么得到它?

问候,Pingu

2 个答案:

答案 0 :(得分:0)

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

问候Pingu

答案 1 :(得分:0)

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

foo.so - > foo.so.1.5.1

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