[comment]: # translation:outdated

[comment]: # ({55fd3f33-22c598e9})
# 2 在Windows上构建Zabbix agent 2

[comment]: # ({/55fd3f33-22c598e9})

[comment]: # ({84651997-84651997})
#### 概述

本节演示如何从源码构建Zabbix agent 2（Windows版本）。

[comment]: # ({/84651997-84651997})

[comment]: # ({2a4da91c-2a4da91c})
#### 安装MinGW编译器

1\. 下载带有SJLJ（set jump/long jump）异常处理
和Windows线程的MinGW-w64（例如
*x86\_64-8.1.0-release-win32-sjlj-rt\_v6-rev0.7z*)\
2. 解压并移动到*c:\\mingw*\
3. 设置环境变量

    @echo off
    set PATH=%PATH%;c:\mingw\bin
    cmd

编译时使用Windows命令提示符而非MinGW提供的MSYS终端

[comment]: # ({/2a4da91c-2a4da91c})

[comment]: # ({71ef8bdd-dec81522})
#### 编译 PCRE 开发库

以下说明将在*c:\\dev\\pcre*中编译安装64位PCRE库，并在*c:\\dev\\pcre32*中安装32位库：

1\. 下载PCRE或PCRE2（Zabbix 6.0起支持）库(<https://pcre.org/>)并解压\
2\. 打开*cmd*并导航至解压后的源码目录

[comment]: # ({/71ef8bdd-dec81522})

[comment]: # ({5def516d-5def516d})
##### 构建64位PCRE

1\. 如果存在旧配置/缓存则删除:

    del CMakeCache.txt
    rmdir /q /s CMakeFiles

2\. 运行cmake (CMake可从
<https://cmake.org/download/>下载):

    cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_CXX_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX=c:\dev\pcre

3\. 接下来, run:

    
mingw32-make clean
    mingw32-make install

[comment]: # ({/5def516d-5def516d})

[comment]: # ({04b79926-04b79926})
##### 构建32位PCRE

1\. 运行:

    mingw32-make clean

2\. 删除 *CMakeCache.txt*:

    del CMakeCache.txt
    rmdir /q /s CMakeFiles

3\. 运行 cmake:

    cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_CXX_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX=c:\dev\pcre32

4\. 接下来, run:

    
mingw32-make install

[comment]: # ({/04b79926-04b79926})

[comment]: # ({e883b968-80e7f73a})
#### 安装OpenSSL开发库

1\. 从<https://curl.se/windows/>下载32位和64位版本\
2. 将文件分别解压至*c:\\dev\\openssl32*和*c:\\dev\\openssl*目录\
3. 完成后删除解压出的*\*.dll.a*文件（DLL调用封装库），因为MinGW会优先使用它们而非静态库。

::: noteimportant
请确保撤销非管理员用户对OpenSSL安装目录（`C:\dev\openssl32`或`C:\dev\openssl`）的写入权限。否则Zabbix agent 2会加载可能被非特权用户修改的SSL配置路径，导致潜在安全漏洞。

:::

[comment]: # ({/e883b968-80e7f73a})

[comment]: # ({f4af7b47-f4af7b47})
#### 编译Zabbix agent 2

[comment]: # ({/f4af7b47-f4af7b47})

[comment]: # ({5f096f18-5f096f18})
##### 32位

打开MinGW环境（Windows命令提示符）并导航至
Zabbix源代码树的*build/mingw*目录。

运行：

    
mingw32-make clean
    mingw32-make ARCH=x86 PCRE=c:\dev\pcre32 OPENSSL=c:\dev\openssl32

[comment]: # ({/5f096f18-5f096f18})

[comment]: # ({f7876f1d-f7876f1d})
##### 64 位

打开MinGW环境（Windows命令提示符）并导航至
Zabbix源代码树的*build/mingw*目录。

运行：

    mingw32-make clean
    mingw32-make PCRE=c:\dev\pcre OPENSSL=c:\dev\openssl

::: noteclassic
 在64位平台上可以构建32位和64位版本，
但32位平台只能构建32位version。
在32位平台上操作时，遵循与64位平台上
构建64位version相同的步骤。

:::

[comment]: # ({/f7876f1d-f7876f1d})
