查符号表nm -A:查看一个.so或.o文件中是否包含某一个函数的方法

本文介绍了如何利用Linux命令行工具查找.so动态链接库中的指定函数以及.o编译对象文件中的函数是否存在。通过`find`、`xargs`、`nm`和`grep`组合使用,可以有效地在符号表中搜索特定函数,同时解释了在符号表中“U”表示未定义函数的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查找包含指定函数的.so:
find -name “*.so” | xargs nm -A 2>/dev/null | grep “_ZTabcABSD124DE”

  1. find -name “*.so”:从当前目录下找到所有.so
  2. | xargs:xargs将利用管道(|)传过来的数据按空格切分,转化为标准输入给予后面的命令
  3. nm -A 2>/dev/null:查看前面xargs命令传入数据的符号表-A:打印符号时显示对应.so的文件名;2>/dev/null:标准错误丢弃;
  4. | grep “_ZTabcABSD124DE”:利用管道接收nm命令的输出,并将输出数据给予grep命令;在grep命令中查找指定字符串。

2、查找.cpp文件生成的.o中是否有指定的函数:
nm -A ./ABCaa.cpp.o | grep func1

:在.o文件中查找函数名,用于判断改函数是否编到.o中
解释:nm -A ***.o :列出该.o的符号表(编译器修饰后的符号名(函数名))

3、当一个函数有声明但没有定义,在符号表中就会显示“U”
表示undefined

2025-03-17 00:22:45.876 15333-15436 OCR car.bkrc.com.car2024 D 创建新的 Predictor 实例 2025-03-17 00:22:45.897 15333-15439 System.err car.bkrc.com.car2024 W at com.baidu.vis.ocrgeneralocr.Predictor.<clinit>(Predictor.java:75) 2025-03-17 00:22:45.897 15333-15439 System.err car.bkrc.com.car2024 W at com.baidu.vis.ocrgeneralocr.Predictor.getAlgorithmId(Predictor.java:102) 2025-03-17 00:22:45.897 15333-15439 Predictor car.bkrc.com.car2024 E ocrgeneralocr_1_0_0 2025-03-17 00:22:45.899 15333-15439 linker car.bkrc.com.car2024 W Warning: "/data/app/~~p3wxVeR7eUxytcSwEORwTA==/car.bkrc.com.car2024-6SP23fUV_-2e7npIQ9urvA==/base.apk!/lib/arm64-v8a/libocrgeneralocr_1_0_0.so" unused DT entry: DT_RPATH (type 0xf arg 0x7e4c) (ignoring) 2025-03-17 00:22:45.916 15333-15436 Predictor car.bkrc.com.car2024 D 模型路径: /data/user/0/car.bkrc.com.car2024/cache/models/ocr 2025-03-17 00:22:45.916 15333-15436 Predictor car.bkrc.com.car2024 I model path/data/user/0/car.bkrc.com.car2024/cache/models/ocr/det_db.nb ; /data/user/0/car.bkrc.com.car2024/cache/models/ocr/rec_crnn.nb;/data/user/0/car.bkrc.com.car2024/cache/models/ocr/cls.nb 2025-03-17 00:22:45.916 15333-15436 OCRPredictorNative car.bkrc.com.car2024 D 尝试加载 libNative.so 2025-03-17 00:22:45.917 15333-15436 OCRPredictorNative car.bkrc.com.car2024 E 加载失败: dlopen failed: cannot locate symbol "_ZN6paddle8lite_api10ConfigBase20set_opencl_precisionENS0_15CLPrecisionTypeE" referenced by "/data/app/~~p3wxVeR7eUxytcSwEORwTA==/car.bkrc.com.car2024-6SP23fUV_-2e7npIQ9urvA==/base.apk!/lib/arm64-v8a/libNative.so"... 2025-03-17 00:22:45.917 15333-15436 OCR car.bkrc.com.car2024 D 模型初始化结果: 失败 2025-03-17 00:22:45.917 15333-15436 System.out car.bkrc.co
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值