标题已经描述了我的问题。
我找到了这个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
答案 0 :(得分:0)
我尝试使用IDA自行检查,您可以在其中查看所有导出的函数和变量。似乎如果nm输出行标有“T”或“B”,则它是一个导出函数。
不确定这是否适用于每个.so文件,但只要没有其他人有更好的解决方案...
如果我错了,请纠正我。
问候Pingu
答案 1 :(得分:0)
作为附录,通常.so文件只是指向真实文件的指针/链接,例如:
foo.so - > foo.so.1.5.1
确保它指向您认为应指向/链接的版本。安装可能会出错,这是一个很好的理智检查。