有时候会想知道 .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