当前位置: 首页 > news >正文

SNMP入门教程:Windows下编译

net-snmp提供的官方库太老了,需要自己编译新版本。

从net-snmp下载最新版源码。

2025.08.05 最新版是5.9.4

解压后发现源码目录没有提供Makefile或者CMakeLists.txt等文件,只有一个configure脚本,这个脚本是Linux下常用的。

在win32子目录下发现有build.bat的文件,应该是用于编译的脚本。

perl

到Strawberry Perl下载x64位,安装即可。

当前版本为5.40.2,安装完成后自动添加环境变量。

openssl

v3版本需要openssl库,这里使用vcpkg安装

vcpkg install openssl

修改源码

编译流程对Windows不友好,根据实际编译流程,修改部分文件内容。

build.pl

/win32/build.pl中添加变量,解决总是编译32位程序问题。

my $target_arch = $ENV{TARGET_CPU} ? $ENV{TARGET_CPU} : $ENV{Platform} ?$ENV{Platform} : "x86";
my $target_arch = "x64";

一旦编译了32位库,那整个环境就被污染了,只能删除源码重来。

net-snmp-config.h

/win32/net-snmp/net-snmp-config.h.in中找到1777行


/* MSVC OpenSSL linker settings. */
#if defined(_MSC_VER)
#  if defined(NETSNMP_USE_OPENSSL)
#    ifdef _DLL
#      ifdef _DEBUG
#        ifdef OPENSSL_BEFORE_1_1_0
#          pragma comment(lib, "libeay32MDd.lib")
#        else
#          ifdef _M_X64
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          else
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          endif
#        endif
#      else
#        ifdef OPENSSL_BEFORE_1_1_0
#          pragma comment(lib, "libeay32MD.lib")
#        else
#          ifdef _M_X64
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          else
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          endif
#        endif
#      endif
#    else
#      ifdef _DEBUG
#        ifdef OPENSSL_BEFORE_1_1_0
#          pragma comment(lib, "libeay32MTd.lib")
#        else
#          ifdef _M_X64
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          else
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          endif
#        endif
#      else
#        ifdef OPENSSL_BEFORE_1_1_0
#          pragma comment(lib, "libeay.lib")
#        else
#          ifdef _M_X64
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          else
#            pragma comment(lib, "libcrypto.lib")
#            pragma comment(lib, "libssl.lib")
#          endif
#        endif
#      endif
#    endif
#    pragma comment(lib, "gdi32.lib")
#    pragma comment(lib, "user32.lib")
#  endif
#endif#endif       /* WIN32 */

修改将要链接的库名称。

编译

打开VS2022的x64本机命令行环境,进入win32子目录。

**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'C:\Program Files\Microsoft Visual Studio\2022\Community>D:D:\>cd net-snmp-5.9.4D:\net-snmp-5.9.4>cd win32

执行build.bat脚本编译

D:\net-snmp-5.9.4\win32>.\build.bat
"my" variable $target_arch masks earlier declaration in same scope at build.pl line 16.Net-SNMP build and install options
==================================1.  OpenSSL support:                disabled
2.  OpenSSL include directory:      C:\Progra~1\OpenSSL-Win64\include
3.  OpenSSL library director:       C:\Progra~1\OpenSSL-Win64\lib\VC4.  Install path:                   c:/usr
5.  Install after build:            enabled6.  Perl modules:                   disabled
7.  Install perl modules:           disabled8.  Quiet build (logged):           enabled
9.  Debug mode:                     disabled10. IPv6 transports:                disabled
11. winExtDLL agent:                disabled12. Link type:                      static13. Install development files       disabledF.  Finished - start build
Q.  Quit - abort buildSelect option to set / toggle: 

选择数字进行设置。

选择1,使用openssl库。

Net-SNMP build and install options
==================================1.  OpenSSL support:                enabled
2.  OpenSSL include directory:      C:\Progra~1\OpenSSL-Win64\include
3.  OpenSSL library director:       C:\Progra~1\OpenSSL-Win64\lib\VC4.  Install path:                   c:/usr
5.  Install after build:            enabled6.  Perl modules:                   disabled
7.  Install perl modules:           disabled8.  Quiet build (logged):           enabled
9.  Debug mode:                     disabled10. IPv6 transports:                disabled
11. winExtDLL agent:                disabled12. Link type:                      static13. Install development files       disabledF.  Finished - start build
Q.  Quit - abort buildSelect option to set / toggle: 13

选择13,安装开发环境。

Net-SNMP build and install options
==================================1.  OpenSSL support:                enabled
2.  OpenSSL include directory:      C:\Progra~1\OpenSSL-Win64\include
3.  OpenSSL library director:       C:\Progra~1\OpenSSL-Win64\lib\VC4.  Install path:                   c:/usr
5.  Install after build:            enabled6.  Perl modules:                   disabled
7.  Install perl modules:           disabled8.  Quiet build (logged):           enabled
9.  Debug mode:                     disabled10. IPv6 transports:                disabled
11. winExtDLL agent:                disabled12. Link type:                      static13. Install development files       enabledF.  Finished - start build
Q.  Quit - abort buildSelect option to set / toggle: 2
Please enter the OpenSSL include directory [C:\Progra~1\OpenSSL-Win64\include]: C:\vcpkg\installed\x64-windows\include

选择2,设置OpenSSL头文件目录。

Net-SNMP build and install options
==================================1.  OpenSSL support:                enabled
2.  OpenSSL include directory:      C:/vcpkg/installed/x64-windows/include
3.  OpenSSL library director:       C:\Progra~1\OpenSSL-Win64\lib\VC4.  Install path:                   c:/usr
5.  Install after build:            enabled6.  Perl modules:                   disabled
7.  Install perl modules:           disabled8.  Quiet build (logged):           enabled
9.  Debug mode:                     disabled10. IPv6 transports:                disabled
11. winExtDLL agent:                disabled12. Link type:                      static13. Install development files       enabledF.  Finished - start build
Q.  Quit - abort buildSelect option to set / toggle: 3
Please enter the OpenSSL library directory [C:\Progra~1\OpenSSL-Win64\lib\VC]: C:\vcpkg\installed\x64-windows\lib

选择3,设置OpenSSL库目录。

Net-SNMP build and install options
==================================1.  OpenSSL support:                enabled
2.  OpenSSL include directory:      C:/vcpkg/installed/x64-windows/include
3.  OpenSSL library director:       C:/vcpkg/installed/x64-windows/lib4.  Install path:                   c:/usr
5.  Install after build:            enabled6.  Perl modules:                   disabled
7.  Install perl modules:           disabled8.  Quiet build (logged):           enabled
9.  Debug mode:                     disabled10. IPv6 transports:                disabled
11. winExtDLL agent:                disabled12. Link type:                      static13. Install development files       enabledF.  Finished - start build
Q.  Quit - abort buildSelect option to set / toggle: f

至此,配置完成,选择F进行编译。

Select option to set / toggle: fBuilding...Creating *.out log files.Deleting old log files...
Running Configure...
Cleaning...
Building main package...Installing main package...
Installing development files...Done!
D:\net-snmp-5.9.4\win32>

编译完成自动退出。到C:\usr可以查看编译结果。默认是Release版本,静态库。

以此流程编译Debug版和动态库。

下载

CSDN:net-snmp 5.9.4 Windows x64 with openssl 自编译版 20MB

本文首发于:SNMP入门教程:Windows下编译

http://www.dtcms.com/a/326576.html

相关文章:

  • Linux811 YUM;SHELL:if else fi,for
  • 进程线程切换的区别
  • 【k近邻】 K-Nearest Neighbors算法k值的选择
  • 第4节 大模型推理内存与计算优化
  • 【FreeRTOS】任务间通讯6: 任务通知- Task Notification
  • python+requests+yaml实现接口自动化用例
  • 【软件分享】格式工厂FormatFactory便携版本(解压即用)
  • 介绍一下jQuery的AJAX异步请求
  • Salesforce案例:零售企业会员积分体系
  • 新人如何简化学习Vue3文件
  • LangChain框架之 invoke() 方法
  • 【每日一错】PDB之间数据迁移
  • 7.Java的继承
  • 分享一款基于STC8H8K32U-45I-LQFP48单片机的4路数字量输入输出模块
  • 多重时间聚合算法(MAPA)改进需求预测模型
  • Redis实现排行榜
  • C++11 auto关键字:智能类型推导指南
  • 字符串相关例题(查询子串在主串中的个数)
  • GB17761-2024标准与电动自行车防火安全的技术革新
  • 编译GCC-12.1.0
  • Linux内核网络设备框架及其注册流程分析
  • Cursor 实用技巧与常见难题解析:从入门到进阶的技术实践
  • Pytest项目_day11(fixture、conftest)
  • OSPF IP FRR 理论和实验
  • 当C#遇上Notepad++:实现GCode可视化编辑的跨界实践
  • 3.数据类型和类型装换
  • Qt——实现”Hello World“、认识对象树与Qt坐标系
  • 用 Node.js 玩转 Elasticsearch从安装到增删改查
  • 月报 Vol.02:新增条件编译属性 cfg、#alias属性、defer表达式,增加 tuple struct 支持
  • 【前端插件】Code-Inspector-Plugin:重新定义前端开发的调试与协作体验