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,安装完成后自动添加环境变量。
opensslv3版本需要openssl库,这里使用vcpkg安装
修改源码编译流程对Windows不友好,根据实际编译流程,修改部分文件内容。
在/win32/build.pl
中添加变量,解决总是编译32位程序问题。
1 2 3 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行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #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
修改将要链接的库名称。
编译打开VS2022的x64本机命令行环境,进入win32子目录。
1 2 3 4 5 6 7 8 ********************************************************************** [vcvarsall.bat] Environment initialized for : 'x64' C:\Program Files\Microsoft Visual Studio\2022\Community>D: D:\>cd net-snmp-5.9.4 D:\net-snmp-5.9.4>cd win32
执行build.bat
脚本编译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 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\VC 4. Install path: c:/usr 5. Install after build: enabled 6. Perl modules: disabled 7. Install perl modules: disabled 8. Quiet build (logged): enabled 9. Debug mode: disabled 10. IPv6 transports: disabled 11. winExtDLL agent: disabled 12. Link type : static 13. Install development files disabled F. Finished - start build Q. Quit - abort build Select option to set / toggle:
选择数字进行设置。
选择1,使用openssl库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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\VC 4. Install path: c:/usr 5. Install after build: enabled 6. Perl modules: disabled 7. Install perl modules: disabled 8. Quiet build (logged): enabled 9. Debug mode: disabled 10. IPv6 transports: disabled 11. winExtDLL agent: disabled 12. Link type : static 13. Install development files disabled F. Finished - start build Q. Quit - abort build Select option to set / toggle: 13
选择13,安装开发环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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\VC 4. Install path: c:/usr 5. Install after build: enabled 6. Perl modules: disabled 7. Install perl modules: disabled 8. Quiet build (logged): enabled 9. Debug mode: disabled 10. IPv6 transports: disabled 11. winExtDLL agent: disabled 12. Link type : static 13. Install development files enabled F. Finished - start build Q. Quit - abort build Select 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头文件目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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\VC 4. Install path: c:/usr 5. Install after build: enabled 6. Perl modules: disabled 7. Install perl modules: disabled 8. Quiet build (logged): enabled 9. Debug mode: disabled 10. IPv6 transports: disabled 11. winExtDLL agent: disabled 12. Link type : static 13. Install development files enabled F. Finished - start build Q. Quit - abort build Select 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库目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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/lib 4. Install path: c:/usr 5. Install after build: enabled 6. Perl modules: disabled 7. Install perl modules: disabled 8. Quiet build (logged): enabled 9. Debug mode: disabled 10. IPv6 transports: disabled 11. winExtDLL agent: disabled 12. Link type : static 13. Install development files enabled F. Finished - start build Q. Quit - abort build Select option to set / toggle: f
至此,配置完成,选择F
进行编译。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Select option to set / toggle: f Building... 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