关于net-snmp的移植,是基于静态编译的,动态的没有做成功,在arm上的移植过程大致如下:
如果没有涉及到扩展agent,则蓝色字体不需要理会。
1.将源码包另找一个路径放下,解压
tar -xzvf net-snmp-5.4.1.tar.gz,
若想扩展agent,则可以将此模块的.c和.h文件先放到net-snmp-5.4.4/agent/mibgroup下一起配置编译;
例如我这里想用代理读写encoder模块,那么先将写好的encoder源文件复制到net-snmp-5.4.4/agent/mibgroup路径下
;
2.CC=arm-linux-gcc ./configure --prefix=/home/arm_for_snmp/ --build=i386-linux --host=arm-linux --enable-mini-agent --disable-ipv6 --with-endianness=little --disable-manuals --disable-ucd-snmp-compatibility --enable-as-needed --disable-embedded-perl --without-perl-modules --disable-snmptrapd-subagent --disable-applications --disable-scripts --with-default-snmp-version="2" --with-sys-contact="lgao@cti.com.cn" --with-sys-location="china" --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp"
若想扩展agent,则可以再末尾继续添加
--with-mib-modules="encoder"
如何添加多个模块,没有试过
3.make LDFLAGS="-static"
如果不指出静态编译,那么直接放到板子上的程序会提示:can’t load library ‘libnetsnmpmibs.so.15’.
4.make install
5.arm-linux-strip snmpd
压缩,节省空间
在arm端执行
1. cd /usr/local/share/snmp/snmp.conf
mibs +NET-SNMP-ENCODER-MIB
2.cd /usr/sbin
./snmpd -c /usr/local/share/snmp/snmpd.conf -M /usr/local/share/snmp/mibs
3.和在虚拟机端一样,开启snmpd进程后,可以
cat /var/log/snmpd.log
来查看代理进程是否成功开启;若出现了版本信息,开启成功。
4.因为在./configure 的选项中是配置了最小的snmpd,所以如果想用到
snmpwalk /snmpget/snmptrap等应用时,可以直接从虚拟机端net-snmp的交叉编译版本的/bin路径下拷过来就可以了。
说明:
在用snmptrap 命令工具测试我加入的encoder模块的时候,会出现报错情况,说是找不到节点什么的,这时可以尝试把类似SNMPv2-MIB:sysLocation.0用OID来表示。这一点更多的是涉及到扩展agent的东西,后面会详细提到的。
相关文章
- 静态数据成员只能在类体外,且通过函数体进行初始化(静态数据成员是在程序编译时被分配空间的)
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
- linux下的动态链接库和静态链接库到底是个什么鬼?(一)静态链接库的编译与使用
- libmad的移植、交叉编译、安装——基于ubuntu16
- u-boot-2011.06在基于s3c2440开发板的移植之编译配置
- 基于s5pv210嵌入式linux使用其他动态、静态库文件程序的交叉编译
- net-snmp的移植,是基于静态编译的
- 原来C++Builder XE6的编译器是基于Clang
- DLNA-基于uShare的DMS移植和编译