Compilación de bibliotecas estáticas y dinámicas de OpenSSL 3.5 en entorno Windows

Requisitos previos

Para compilar OpenSSL 3.5 en Windows, se necseitan las siguientes herramientas:

  • OpenSSL: Versión 3.5.1, disponible como archivo comprimido openssl-3.5.1.tar.gz.
  • NASM: Ansamblador de red, versión nasm-2.16.03-win64.zip para sistemas de 64 bits.
  • Perl: Lenguaje de scripting, se recomienda Strawberry Perl versión 5.32.1.1 para arquitectura de 64 bits.

Asegúrese de descargar versiones compatibles con la arquitectura de su sistema operativo (32 o 64 bits).

Configuración del entorno

Después de instalar las herramientas, configure las variables de sistema para incluir las rutas de ejecutables de NASM, Perl y las herramientas de compilación de Visual Studio, como nmake.

Proceso de compilación

Utilice Visual Studio 2022 o una versión compatible. Abra la terminal de desarrollo correspondiente (por ejemplo, "Developer Command Prompt for VS 2022") con privilegios de administrador.

Verifique la instalación ejecutando comandos como perl --version, nasm --version y nmake /? para confirmar que están disponibles.

Para organizar la salida, cree una estructura de directorios. Por ejemplo:

  • Bibliotecas dinámicas: C:\OpenSSL\Output\DLL\x64\Release y C:\OpenSSL\Output\DLL\x64\Debug
  • Bibliotecas estáticas: C:\OpenSSL\Output\Lib\x64\Release y C:\OpenSSL\Output\Lib\x64\Debug
  • Archivos temporales: C:\OpenSSL\Output\Temp

Dentro del directorio fuente de OpenSSL, cree un script por lotes para automatizar la compilación. A continuación, un ejemplo para construir versiones de 64 bits:

rem Limpiar compilaciones anteriores
nmake clean

rem Compilar versión de lanzamiento dinámica
perl Configure VC-WIN64A --prefix=C:\OpenSSL\Output\DLL\x64\Release --openssldir=C:\OpenSSL\Output\Temp
nmake
nmake test
nmake install_sw

rem Compilar versión de depuración dinámica
nmake clean
perl Configure VC-WIN64A --debug --prefix=C:\OpenSSL\Output\DLL\x64\Debug --openssldir=C:\OpenSSL\Output\Temp
nmake
nmake test
nmake install_sw

rem Compilar versión de lanzamiento estática
nmake clean
perl Configure VC-WIN64A --prefix=C:\OpenSSL\Output\Lib\x64\Release --openssldir=C:\OpenSSL\Output\Temp no-shared
nmake
nmake test
nmake install_sw

rem Compilar versión de depuración estática
nmake clean
perl Configure VC-WIN64A --debug --prefix=C:\OpenSSL\Output\Lib\x64\Debug --openssldir=C:\OpenSSL\Output\Temp no-shared
nmake
nmake test
nmake install_sw

Opciones clave:

  • no-shared: Genera bibliotecas estáticas en lugar de dinámicas.
  • --debug: Habilita la compilación en modo depuración.
  • nmake install_sw: Instala solo binarios y bibliotecas, sin documentación HTML.

Verificación con código de ejemplo

Después de la compilación, pruebe la instalación con un programa sencillo. No olvide enlazar bibliotecas del sistema como Crypt32.lib y ws2_32.lib al compilar, ya que OpenSSL depende de ellas.

#include <iostream>
#include <openssl>
#include <ctime>

int main() {
    std::srand(std::time(nullptr));
    unsigned char datosAleatorios[16];
    int estado = RAND_bytes(datosAleatorios, sizeof(datosAleatorios));

    if (estado == 1) {
        for (int idx = 0; idx < sizeof(datosAleatorios); ++idx) {
            std::cout << "[" << static_cast<int>(datosAleatorios[idx]) << "]";
        }
        std::cout << std::endl;
    }
    return 0;
}</int></ctime></openssl></iostream>

El código anterior genera 16 bytes aleatorios y los muestra en consola para verificar el correcto funiconamiento de OpenSSL.

Compilación para arquitectura de 32 bits

El proceso es similar al de 64 bits, pero se utiliza el objetivo VC-WIN32 en el comando de configuración. Ajuste las rutas de salida según sea necesario.

Etiquetas: OpenSSL NASM Perl Visual Studio 2022 compilación de bibliotecas

Publicado el 6-30 03:09