Linux下引用类库报undefined symbol错误的解决方法

笔者在SLES11SP1启动snmpd服务时报如下的错误,因为之前都是没有问题的,觉得非常奇怪。

/usr/sbin/snmpd: undefined symbol: smux_listen_sd

在网上查了一下这个报错,大部分都是说重新安装net-snmp。而我重新安装net-snmp软件包之后,还是同样地报错。这个问题该如何去看待呢?我在处理的过程中,走了一些弯路,现在将整个问题的处理方式整理一下,发在这里供各位参考。

查看这个报错,我们要认识到,这是在执行/usr/sbin/snmpd所报出来的错误,我们可以尝试执行/usr/sbin/snmpd,这个报错还是会出现。而从报错的文字来看,我们可以了解到,/usr/sbin/snmpd在执行过程中要调用一些类库,但是在调用的过程中却发现找不到某个类库的某个符号。那么,这个类库到底是哪个呢?我们可以使用ldd命令查看所有/usr/sbin/snmpd引用的类库。

ldd /usr/sbin/snmpd

其中有一些形如libnetsnmp*的类库,比如下面的这行。我们有理由怀疑报错的符号是libnetsnmp*类库中的,在我们实际处理过程中,对比了其他正常主机的情况,发现libnetsnmp*类库的路径差异很大。

libnetsnmp.so.15 => /lib64/libnetsnmp.so.15

当我们ls查看这个动态类库时,我们会发现有一些特殊的地方,如下,它指向了一个特殊的地方,与其他主机上的情况有所不同。
/lib64/libnetsnmp.so.15 -> /smp/net-snmp/lib/libnetsnmp.so.15
因此,我们需要追究为啥会有这个特殊的软链接,一般而言,应当是源码编译安装导致的,执行卸载命令后即可恢复正常。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值