系统相关
首页 > 系统相关> > linux-如何从lib .so文件中查找功能?

linux-如何从lib .so文件中查找功能?

作者:互联网

我可以打印一个* .so文件的导出功能列表,例如

nm -C lib / libopencv_ml.so

然后找到我的功能

nm -C lib / libopencv_ml.so | grep我的功能

但是,当我想从所有.so文件中查找函数时,如何确定哪个.so包含我的函数?

这只是打印功能的所有条目,但我需要知道它从哪个.so文件中出现.

nm -C lib / *.so | grep cvSetZero

似乎-H选项也没有帮助.
-H,–with-filename打印每个匹配项的文件名

nm -C lib / *.so | grep -Hn cvSetZero

生成如下输出:

(standard input):98:                 U cvSetZero
(standard input):796:                 U cvSetZero
(standard input):2564:00000000000b2540 T cvSetZero
(standard input):8673:                 U cvSetZero
(standard input):12233:                 U cvSetZero
(standard input):15503:                 U cvSetZero
(standard input):17460:                 U cvSetZero
(standard input):18727:                 U cvSetZero
(standard input):20865:                 U cvSetZero

解决方法:

我找到了解决方案

nm -C -A lib / *.so | grep cvSetZero

它产生这种输出:

lib/libopencv_calib3d.so:                 U cvSetZero
lib/libopencv_contrib.so:                 U cvSetZero
lib/libopencv_core.so:00000000000b2540 T cvSetZero
lib/libopencv_highgui.so:                 U cvSetZero
lib/libopencv_imgproc.so:                 U cvSetZero
lib/libopencv_legacy.so:                 U cvSetZero
lib/libopencv_ml.so:                 U cvSetZero
lib/libopencv_objdetect.so:                 U cvSetZero
lib/libopencv_video.so:                 U cvSetZero

标签:nm,grep,shared-libraries,linux
来源: https://codeday.me/bug/20191118/2026792.html