1. 资源下载及说明
https://www.agentpp.com/download.html
地址下载 C++ APIs 栏下SNMP++及Agent++源码包
如果要支持v3版本的数据传送,还需要下载libdes-l-4.01a
目前下载版本:
SNMP++为3.5.1版本
Agent++为4.6.1版本
提醒:如果要编译带openssl的v3版本snmp库,请直接看第5部分
1.1 SNMP++
适用于C++开发SNMP协议的一套API库
1.2 Agent++
基于SNMP++ 库,方便开发SNMP Agent代理的API库,所以要使用Agent++要先编译SNMP++
2. libdes-l-4.01a编译
解压后cd到libdes目录下
修改Makefile中CC的值,改为对应交叉编译链即可。
CC=aarch64-linux-gnu-gcc
执行make即可在当前目录下找到生成的libdes.a库
3. snmp++编译
3.1 解压源码包
tar -xzvf snmp++-3.5.1.tar.gz
3.2 执行configure
注意:在输出目录下创建lib64文件夹,将libdes.a放到其中,例如/home/vmuser/SNMP++/out/lib64
若不需要snmp v3版本内容,则去掉–enable-snmpv3即可
cd snmp++-3.5.1/
## 根据实际情况设置编译链及输出文件目录
./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --prefix=/home/vmuser/SNMP++/out --enable-snmpv3
3.3 编译
执行以下命令后可在–prefix参数设置的目录下找到编译好的库文件和所需的头文件
make
make install
4.Agent++编译
4.1 解压源码包
解压后可在当前目录建立个out目录用于安装输出目录
tar -xzvf agent++-4.6.1.tar.gz
4.2 设置PKG_CONFIG_PATH
snmp++编译完成后,编译Agent++时需要配置snmp++库安装的路径地址。执行configure前要设置PKG_CONFIG_PATH环境变量告诉configure脚本在哪里查找libsnmp++的pkg-config文件。假设你的libsnmp++的pkg-config文件位于/home/vmuser/SNMP++/out/lib/pkgconfig/
,你可以运行以下命令:
export PKG_CONFIG_PATH=/home/vmuser/SNMP++/out/lib/pkgconfig/
4.3 执行configure
cd agent++-4.6.1/
## 根据实际情况设置编译链及输出文件目录
./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --prefix=/home/vmuser/Agent++/out
4.4 编译
执行以下命令后可在–prefix参数设置的目录下找到编译好的库文件和所需的头文件
make
make install
5.snmp v3 使用openssl 编译
5.1 openssl编译
如果要使用IDEA等加密方式,就需要用到openssl来一起编译snmp v3版本的snmp++库而不是使用libdes
这种情况下,就得先编译openssl
openssl在github上开源,可以直接下载源码进行编译,地址为:https://github.com/openssl/openssl
注意:最新版snmp++要求的openssl版本要>= 1.1.0 (Oleg Bt)
注意:执行 config 时,加上 no-asm 表示不使用汇编代码加速编译。
我这里下载的版本为openssl1.1.1d,下载后解压,cd到对应目录下执行:
./config no-asm CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc --prefix=/home/vmuser/openssl-OpenSSL_1_1_1d/out
make
make install
其中 CXX对应实际编译链 --prefix为编译输出的目录
如果编译时遇到错误:unrecognized command line option ‘-m64’
可在编译前打开Makefile,将里面-m64都删除,然后重新make即可。
5.2 snmp++编译
将openssl编译输出的目录下的include中openssl目录拷贝到/snmp+±3.5.1/include/下
然后执行如下 ./configure 命令即可。
注意要加上CXXFLAGS=-fPIC
PKG_CONFIG_PATH: openssl库输出路径中lib/pkgconfig目录
./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ CXXFLAGS=-fPIC --prefix=/home/vmuser/SNMP++/out --enable-snmpv3 --with-ssl PKG_CONFIG_PATH=/home/vmuser/openssl-OpenSSL_1_1_1d/out/lib/pkgconfig/
make
make install
5.3 agent++编译
在snmp库输出目录下新建一个lib64目录,将lib里的libsnmp++.a拷贝lib64下。
例如将cp /home/vmuser/SNMP++/out/lib/libsnmp++.a /home/vmuser/SNMP++/out/lib64/libsnmp++.a
–with-libsnmp-prefix:参数为snmp输出目录
执行:
./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --prefix=/home/vmuser/Agent++/out --with-snmp --with-libsnmp-prefix=/home/vmuser/SNMP++/out/
make
make install
编译完成后,agent库即在设置好的输出目录lib里。
这样我们就得到了libssl、libcrypto、libsnmp++、libagent++这四个库文件(.a及.so都有)