Áú»¢¶Ä²©

1 Compilant l'agent Áú»¢¶Ä²© sota Windows

Vista general

Aquesta secci¨® ensenya com crear binaris d'agent Áú»¢¶Ä²© Windows a partir de fonts amb o sense TLS.

Compilar OpenSSL

Les passes seg¨¹ents us ajudaran a compilar OpenSSL des de la font a MS Windows 10 (64 bits).

  1. Abans de procedir, comproveu que la m¨¤quina Windows t¨¦:

    • Compilador C (p. ex. VS 2017 RC),
    • NASM (),
    • Perl (per exemple, Strawberry Perl de ),
    • ²Ñ¨°»å³Ü±ô Perl Text::Template (cpan Text::Template).
  2. Obtingueu fonts OpenSSL de . Aquest exemple empra OpenSSL 1.1.1.

  3. Descomprimiu les fonts OpenSSL, per exemple, a E:\openssl-1.1.1.

  4. Obriu una l¨ªnia de comandes, com ara Native Tools x64 Command Prompt per a VS 2017 RC.

  5. Navegueu al directori font d'OpenSSL, (en aquest tutorial, E:\\openssl-1.1.1.) i verifiqueu que s'hi troba el NASM:

e:\openssl-1.1.1> nasm --version
                NASM versi¨® 2.13.01 compilada l'1 de maig de 2017
  1. Configureu OpenSSL, per exemple:
e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configura VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1 -method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
 - Tingueu en compte l'opci¨® 'no-shared': si s'empra 'no-shared', les biblioteques est¨¤tiques d'OpenSSL libcrypto.lib i libssl.lib seran 'autosuficients' i els binaris Áú»¢¶Ä²© resultants inclouran OpenSSL, no cal per a 'DLL externa OpenSSL'.
        Avantatge: els binaris Áú»¢¶Ä²© es poden copiar a altres m¨¤quines Windows sense biblioteques OpenSSL.
        Desavantatge: quan es publica una nova versi¨® de correcci¨® d'errors d'OpenSSL, cal recompilar i tornar a instal¡¤lar l'agent Áú»¢¶Ä²©.
        - Si no s'empra 'no-shared', les biblioteques est¨¤tiques libcrypto.lib i libssl.lib empraran DLL OpenSSL quan s'executen.
        Avantatge: quan es publica una nova versi¨® de correcci¨® d'errors d'OpenSSL, probablement nom¨¦s podreu actualitzar les DLL d'OpenSSL, sense recompilar l'agent Áú»¢¶Ä²©.
        Desavantatge: per copiar l'agent Áú»¢¶Ä²© a una altra m¨¤quina tamb¨¦ cal copiar les DLL d'OpenSSL.
  1. Compileu OpenSSL, executeu la prova, instal¡¤leu:
e:\openssl-1.1.1> nmake
       e:\openssl-1.1.1> test nmake
       ...
       All tests successful.
       Fitxers=152, proves=1152, 501 segons de rellotge de paret (0,67 usr + 0,61 sys = 1,28 CPU)
       Resultat: PASS
       e:\openssl-1.1.1> nmake install_sw

install\_sw nom¨¦s instal¡¤la components de programari (¨¦s a dir, biblioteques, fitxers de cap?alera, per¨° sense documentaci¨®). Si ho voleu tot, empreu nmake install.

Compilar PCRE

  1. Baixeu la biblioteca PCRE o PCRE2 des del repositori ().

  2. Extraieu-lo al directori E:\pcre2-10.39.

  3. Instal¡¤leu CMake des de , en instal¡¤lar seleccioneu i assegureu-vos que cmake\bin estigui al vostre cam¨ª (versi¨® provada 3.9.4).

  4. Creeu un nou directori de compilaci¨® buit, preferiblement un subdirectori del directori font. Per exemple, E:\pcre2-10.39\build.

  5. Obriu una finestra de l¨ªnia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i des d'aquest entorn de shell executeu cmake-gui. No intenteu iniciar Cmake des del men¨² Inici de Windows, ja que aix¨° pot provocar errors.

  6. Introdu?u E:\pcre2-10.39 i E:\pcre2-10.39\build per als directoris font i compilaci¨®, respectivament.

  7. Premeu el bot¨® "Configurar".

  8. Quan especifiqueu el generador per a aquest projecte, seleccioneu "NMake Makefiles".

  9. Creeu un nou directori d'instal¡¤laci¨® buit. Per exemple, E:\pcre2-10.39-install.

  10. Tot seguit, la GUI mostrar¨¤ diverses opcions de configuraci¨®. Assegureu-vos que les opcions seg¨¹ents s¨®n triades:

    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Premeu "Configurar" de nou. El bot¨® "Generar" adjacent ara hauria d'¨¦sser actiu.

  12. Premeu "Generar".

  13. En cas d'error, es recomana esborrar la mem¨°ria cau de CMake abans d'intentar repetir el proc¨¦s de creaci¨® de CMake. A la GUI de CMake, la mem¨°ria cau es pot esborrar seleccionant "Fitxer > Esborrar la mem¨°ria cau".

  14. El directori de compilaci¨® ara hauria de contindre un sistema de compilaci¨® utilitzable - Makefile.

  15. Obriu una finestra de l¨ªnia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i navegueu al Makefile esmentat anteriorment.

  16. Executeu l'ordre NMake:

E:\pcre2-10.39\build> nmake install

Compilaci¨® de Áú»¢¶Ä²©

Les passes seg¨¹ents us ajudaran a compilar Áú»¢¶Ä²© des de la font a MS Windows 10 (64 bits). Quan es compila Áú»¢¶Ä²© amb/sense suport TLS, l'¨²nica difer¨¨ncia significativa es troba a la passa 4.

  1. A una m¨¤quina Linux, comproveu la font des de 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
  1. Copieu i descomprimiu l'arxiu, p.e. zabbix-7.2.0.tar.gz, a una m¨¤quina Windows.

  2. Suposem que les fonts s¨®n a e:\zabbix-7.2.0. Obriu una finestra de l¨ªnia de comandes, com ara l'indicador d'ordres natiu de les eines x64 per a VS RC 2017. Aneu a:

E:\\zabbix-4.4.0\\build\\win32\\project
  1. Compileu zabbix_get, zabbix_sender i zabbix_agent.
    • sense TLS:
    E:\zabbix-7.0.0\build\win32\project> nmake /K PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
    • amb TLS: ``E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-7.0.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
  2. Els nous binaris es troben a e:\zabbix-7.2.0\bin\win64. Com que OpenSSL es va compilar amb l'opci¨® 'no compartit', els binaris de Áú»¢¶Ä²© contenen OpenSSL en si mateixos i es poden copiar a altres m¨¤quines que no tinguin OpenSSL.

Compilar Áú»¢¶Ä²© amb LibreSSL

El proc¨¦s ¨¦s similar a la compilaci¨® amb OpenSSL, per¨° cal fer petits canvis als fitxers que es troben al directori build\win32\project:

  • Al Makefile_tls , esborreu /DHAVE_OPENSSL_WITH_PSK

Per fer-ho, cerqueu:

CFLAGS = $(CFLAGS) /DHAVE\_OPENSSL /DHAVE\_OPENSSL\_WITH\_PSK

i substitu?u per

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • Al Makefile_common.inc, afegiu /NODEFAULTLIB:LIBCMT

I cerqueu:

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\\$(TARGETNAME).pd

i substitu?u per:

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT