2017-08-29 21 views
0

在使用SNMP时,我无法执行snmpwalksnmpset。然后我检查了snmpd -H关于SNMP,(dlopen failed:undefined symbol:memdup)有什么影响?

我看到一个错误:

的dlopen(/lib/libvcpeLiTapMediationTable.so)失败:/lib/libvcpeLiTapMediationTable.so:未定义的符号:memdup 的dlopen(/lib/libvcpeLiTapStreamTable.so)失败: /lib/libvcpeLiTapStreamTable.so:undefined symbol:memdup

我认为我的库可能没有动态打开,因此。

当我在CentOS中以rpms加载我的软件包时,我没有任何错误。 但是对于相同的代码,当我在Ubuntu中将我的软件包加载为debian软件包时,我看到这个错误。

查询:

  1. 是否与安装SNMP的任何问题(因为它工作在CentOS而不是在Ubuntu)?或者在我的debian软件包中缺少某些东西?

  2. 请解释此错误对我的操作的影响。

任何相关答案都会有帮助,因为我是新手。

谢谢。

回答

0

您的libvcpeLiTapMediationTable.so取决于功能memdup()。这在CentOS上定义,无论它在哪里建立,都在Net-SNMP或其运行时链接到的其中一个库中,但未在Ubuntu上定义。因此,它不能被加载是行不通的。

的Net-SNMP在snmplib/tools.c定义memdup(),但被重命名为netsnmp_memdup()以避免与可能根据change history定义自己版本的其他库的冲突。也许你在两个发行版之间使用了两个不同版本的Net-SNMP,一个发行版和一个没有发生变化的发行版。

+0

是的,这些信息很有帮助。这些错误的影响是什么?这些表格上的任何snmp操作都不会起作用吗? –

+0

我会想象不到。我只是在这里根据文件名猜测,但我想这个文件正在执行一个[可能是专有的,因为我找不到任何关于它的]表作为一个子代理,在运行时动态加载到你的主代理提供其功能。由于该错误无法加载,因此无论它实现什么,都不会添加到主代理中。 –

+0

为什么我们不能在编译时得到这种类型的错误,因为它是'未定义符号'错误? –