在Windows上构建Zabbix agent
概述
编译OpenSSL
接下来的步骤将助你在MS Windows 10(64位)的源中编译OpenSSL。
- 编译OpenSSL你需要在Windows机器上安装:
- C compiler (e.g. VS 2017 RC),
- NASM (https://www.nasm.us/),
- Perl (e.g. Strawberry Perl from ),
- Perl module Text::Template (cpan Text::Template).
- 获取 OpenSSL 源代码 https://www.openssl.org/。这里用OpenSSL 1.1.1 版本。
- 解压 OpenSSL 源,例如,解压在 E:\openssl-1.1.1。
- 打开命令行窗口。例如,VS 2017 RC的 x64 原生工具命令提示符。
- 至 OpenSSL 源目录, 例如,E:\openssl-1.1.1。
- 验证 NASM 能被找到:
- 编译OpenSSL,运行测试,安装:
e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw
‘install_sw’ 仅安装软件组件(例如 库,头文件,但不安装文档)。如果你希望安装所有的文件,请用 “nmake install”。
编译PCRE
- 从 pcre.org (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip) 存储库中下载PCRE 或 PCRE2 (Zabbix 6.0以上支持) 库:
- 提取到目录E:\pcre2-10.39
- 从 安装CMake,安装过程中选择: 确保 cmake\bin 在你的路径的 (测试版本3.9.4).
- 创建一个新的空的构建目录,最好是源目录的子目录。例如E:\pcre2-10.39\build.
- 打开命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,并且从该外部环境运行cmake-gui。不要试图从窗口开始菜单启动Cmake,因为这可能会导致错误。
- 分别为源目录和构建目录输入 E:\pcre2-10.39 和E:\pcre2-10.39\build 。
- 点击 “Configure” 按钮。
- 为此项目指定生成器时,请选择 “NMake Makefiles”。
- 创建一个新的空的安装目录。例如,E:\pcre2-10.39-install。
- GUI 将列出几个配置选项。确保选择了以下几个选项:
- PCRE_SUPPORT_UTF ON
- CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
- 再次点击 “Configure” 。相邻的”Generate”按钮需要启用。
- 点击 “Generate”.
- 如果出现错误,建议在尝试重复构建CMake的过程中删除CMake缓存。 在CMake GUI中,缓存可以通过选择 “File > Delete Cache”来删除。
- 构建目录现在应该包含了一个可用的构建系统 - Makefile.
- 打开命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,导航到上面提到的 Makefile 。
- 运行 NMake 命令:
编译 Zabbix
- 在Linux机器上,检查git源代码:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist
- 在Windows机器上复制和解压归档文件,例如 zabbix-4.4.0.tar.gz。
- 我们假设源代码在 e:\zabbix-4.4.0中。打开命令行窗口,例如 VS 2017 RC中的 x64原生工具命令提示符。转至 E:\zabbix-4.4.0\build\win32\project。
- 编译 zabbix_get, zabbix_sender 和 zabbix_agent。
- 无TLS:
E:\zabbix-4.4.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
- 有TLS:
- 无TLS:
- 新的二进制文件位于 e:\zabbix-4.4.0\bin\win64。由于 OpenSSL 是用 ‘no-shared’ 选项编译的,Zabbix二进制文件本身包含OpenSSL,可以复制到其他没有OpenSSL的机器中。
用LibreSSL编译Zabbix
该过程类似于使用OpenSSL编译,但是你需要对位于build\win32\project
目录中的文件进行一些小的改变:
/MANIFESTUAC:”level=’asInvoker’ uiAccess=’false’” /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>然后用 /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT
进行替换