1,从www.net.-snmp.org下载net-snmp5.7.3源码包解压
2,配置 ./configure
--build=i686-linux //编译平台,根据平台的不同,可能需要改成i386
--host=arm-linux //运行平台
CC=arm-linux-gcc //交叉编译器
--with-endianness=little //指定小端
--enable-mini-agent //最小的SNMP(编译出来的SNMP比较小)
--with-install-prefix=/home/red/net-snmp //安装目录,这个是编译后安装的目录,需要在这些目录下的文件拷贝到开发板运行的arm版本上
--with-ar=arm-linux-ar //arm-linux-ar二进制工具用来管理文件
LDFLAGS="-static"//静态编译,如果有些库找不到,可以在双引号内添加类似 -L/usr/lib这样的目录,指定你的库文件所在的路径。
--disable-manuals//不安装手册
--disable-embedded-perl//有时候找不到perl库文件,可以禁止编译perl部分
--without-perl-modules //没有perl模块
以上可以用./configure -help来查看各个选项的含义
配置时的问题可以全部选择默认,一路enter下去
3,编译 make
4,安装 make install ,这一步需要用root权限,会安装到第二步配置中指定的目录路径下。
5,编译后的snmpd,snmpwalk等程序比较大的话,可以用arm-linux-strip xxxx 命令压缩一下程序。
can not found lperl表示找不到相关的库文件,在usr/bin/目录中查找是否存在libperl.so,如果没有需要从安装相关的库。命令apt-get install libperl-dev。如果存在则需要进行连接链接如 ln -s libperl.so libperl.so.5.18
2,配置 ./configure
--build=i686-linux //编译平台,根据平台的不同,可能需要改成i386
--host=arm-linux //运行平台
CC=arm-linux-gcc //交叉编译器
--with-endianness=little //指定小端
--enable-mini-agent //最小的SNMP(编译出来的SNMP比较小)
--with-install-prefix=/home/red/net-snmp //安装目录,这个是编译后安装的目录,需要在这些目录下的文件拷贝到开发板运行的arm版本上
--with-ar=arm-linux-ar //arm-linux-ar二进制工具用来管理文件
LDFLAGS="-static"//静态编译,如果有些库找不到,可以在双引号内添加类似 -L/usr/lib这样的目录,指定你的库文件所在的路径。
--disable-manuals//不安装手册
--disable-embedded-perl//有时候找不到perl库文件,可以禁止编译perl部分
--without-perl-modules //没有perl模块
以上可以用./configure -help来查看各个选项的含义
配置时的问题可以全部选择默认,一路enter下去
3,编译 make
4,安装 make install ,这一步需要用root权限,会安装到第二步配置中指定的目录路径下。
5,编译后的snmpd,snmpwalk等程序比较大的话,可以用arm-linux-strip xxxx 命令压缩一下程序。
6,查看/home/red/net-snmp/usr/local/bin/目录下是否有snmpwalk,snmpset等程序,sbin/目录下是否有snmpd程序,有表示安装成功。
8,将源码包中的EXAMPLE.conf mibs文件夹拷贝到开发板/usr/local/share/snmp目录下,如果没有就建立一个这样的目录,并将文件名改成snmpd.conf,该文件是配置文件
9,修改snmpd.conf中的配置,将AGENT BEHAVIOUR下的agentAddress udp:127.0.0.1:161修改为ageentAddress udp:161,原来的配置是只本机的snmp访问,修改以后其它的设备才可以访问。
在ACCESS CONTROL段增加view systemonly included .1,这个改动为了可以访问.1节点下面的所以信息。
测试:在主机输入以下命令$snmpwalk -v 2c -c public 192.168.2.166 sysName.0,192.168.2.166是开发板的IP,sysName是对应的节点全称。显示如下SNMPv2-MIB::sysName.0 = STRING: FORLINX6410,成功。
也可以在开发板用snmpwalk访问主机的设备信息
可能的错误:can not found lperl表示找不到相关的库文件,在usr/bin/目录中查找是否存在libperl.so,如果没有需要从安装相关的库。命令apt-get install libperl-dev。如果存在则需要进行连接链接如 ln -s libperl.so libperl.so.5.18