在Windows上构建Zabbix agent

    概述

    编译OpenSSL

    接下来的步骤将助你在MS Windows 10(64位)的源中编译OpenSSL。

    1. 编译OpenSSL你需要在Windows机器上安装:
      1. C compiler (e.g. VS 2017 RC),
      2. NASM (https://www.nasm.us/),
      3. Perl (e.g. Strawberry Perl from ),
      4. Perl module Text::Template (cpan Text::Template).
    2. 获取 OpenSSL 源代码 https://www.openssl.org/。这里用OpenSSL 1.1.1 版本。
    3. 解压 OpenSSL 源,例如,解压在 E:\openssl-1.1.1。
    4. 打开命令行窗口。例如,VS 2017 RC的 x64 原生工具命令提示符。
    5. 至 OpenSSL 源目录, 例如,E:\openssl-1.1.1。
      1. 验证 NASM 能被找到:
    6. 编译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

    1. 从 pcre.org (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip) 存储库中下载PCRE 或 PCRE2 (Zabbix 6.0以上支持) 库:
    2. 提取到目录E:\pcre2-10.39
    3. 从 安装CMake,安装过程中选择: 确保 cmake\bin 在你的路径的 (测试版本3.9.4).
    4. 创建一个新的空的构建目录,最好是源目录的子目录。例如E:\pcre2-10.39\build.
    5. 打开命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,并且从该外部环境运行cmake-gui。不要试图从窗口开始菜单启动Cmake,因为这可能会导致错误。
    6. 分别为源目录和构建目录输入 E:\pcre2-10.39E:\pcre2-10.39\build
    7. 点击 “Configure” 按钮。
    8. 为此项目指定生成器时,请选择 “NMake Makefiles”。
    9. 创建一个新的空的安装目录。例如,E:\pcre2-10.39-install
    10. GUI 将列出几个配置选项。确保选择了以下几个选项:
      • PCRE_SUPPORT_UTF ON
      • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
    11. 再次点击 “Configure” 。相邻的”Generate”按钮需要启用。
    12. 点击 “Generate”.
    13. 如果出现错误,建议在尝试重复构建CMake的过程中删除CMake缓存。 在CMake GUI中,缓存可以通过选择 “File > Delete Cache”来删除。
    14. 构建目录现在应该包含了一个可用的构建系统 - Makefile.
    15. 打开命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,导航到上面提到的 Makefile
    16. 运行 NMake 命令:

    编译 Zabbix

    1. 在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
    2. 在Windows机器上复制和解压归档文件,例如 zabbix-4.4.0.tar.gz。
    3. 我们假设源代码在 e:\zabbix-4.4.0中。打开命令行窗口,例如 VS 2017 RC中的 x64原生工具命令提示符。转至 E:\zabbix-4.4.0\build\win32\project。
    4. 编译 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:
    5. 新的二进制文件位于 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进行替换