Linux 下查找 .so 文件中函数入口

时间:2023-02-15 16:17:33

有时候会想知道 .so 文件中某些信息,比如版本,函数入口等。strings 命令是个很有用的命令,比如我想知道 libstdc++.so 这个动态库里面是否有 refill 函数,可以用

$ strings libstdc++.so | grep refill

输出

_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm

由于 c++ 编译后会修改函数签名,可以用 c++filt命令恢复,

$ c++filt ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm

输出

__gnu_cxx::__pool_alloc_base::_M_refill(unsigned long)

另外,用 nm 命令也可以

$ nm -D libstdc++.so | grep refill