在网上下载net-snmp5.7.3版本的源码,将其解压到Linux系统之中。
gcc编译net-snmp
进入解压的net-snmp源码根目录下,输入以下命令:
./configure --prefix=/usr/local/net-snmp
该命令进行了安装目录的指定以及源代码的配置,之后输入make进行编译,在make编译的时候遇到了一个错误,提示找不到perl这个库:
/usr/bin/ld: cannot find -lperl
collect2: error: ld returned 1 exit status
make[1]: *** [libnetsnmpagent.la] 错误 1
原因是没有安装perl开发环境。
apt-get install libperl-dev
编译完成后执行makeinstall进行安装。安装完成后的代码目录位于/usr/local/net-snmp目录下。在安装过程中注意,因为现在大部分设备使用的为snmpv1/v2协议,所以为了同设备兼容,我们在安装过程中,当snmp提示选择协议的default版本时,其默认的为3,这里我们需要输入2,之后回车即可使默认的snmp协议版本为v2。这样安装完成。
arm-linux-gcc编译net-snmp库
进入NET-SNMP5.7.3代码目录,将原先编译用来在PC端Linux上进行安装的文件清空,通过make clean命令实现,之后重新配置,具体的命令如下:
./configure
--build=i686-linux 编译平台
--host=arm-linux 编译生成的代码的运行平台
--with-cc=arm-linux-gcc 交叉编译工具
--with-ar=arm-linux-ar arm-linux-ar二进制工具用来管理文件
--with-endianness=little 小端模式
--enable-mini-agent 最小的snmp(编译出来的snmp比较小)
--prefix=/home/yjj/net-snmp-arm 指定安装路径
--disable-shared 关闭共享,不添加该选项,在编译时会提示cannotfind lperl,具体原因不明
之后配置完成后进行make编译,编译通过后makeinstall进行安装。将编译生成的文件按照安装的路径拷贝到arm的文件系统中,没有对应的路径则自己创建。这里如果路径不同,可能存在net-snmp库移植到开发板上后无效的情况。
完成后就可以开始snmp开发之路了~~