programas programa para ejecutar compilar c++ c windows 64bit win64

ejecutar - programa para compilar c++



¿Cómo se compila OpenSSL para x64? (6)

Después de seguir las instrucciones en INSTALL.W64 tengo dos problemas:

  • El código todavía se escribe en la carpeta "out32". Necesito poder enlazar a las versiones de 32 bits y de 64 bits de la biblioteca en mi estación de trabajo, así que no quiero que las versiones de 64 bits afecten a las bibliotecas de 32 bits.
  • ¡La salida sigue siendo de 32 bits! Esto significa que recibo errores de "símbolo externo no resuelto" al intentar vincular las bibliotecas desde una aplicación x64.

De acuerdo con la documentación oficial:

"Puede sorprenderse: los artefactos de 64 bits se publican en los subdirectorios out32 * y llevan nombres que terminan * 32.dll. De hecho, el objetivo de compilación de 64 bits es hasta ahora un cambio incremental sobre el objetivo heredado de Windows de 32 bits. las banderas todavía tienen la etiqueta "32", aunque se aplican tanto a objetivos de 32 como de 64 bits ".

Entonces la primera respuesta ya no es necesaria.

Las instrucciones se pueden encontrar aquí:

https://wiki.openssl.org/index.php/Compilation_and_Installation#W64


Para compilar las bibliotecas estáticas (tanto de versión como de depuración), esto es lo que debe hacer:

  1. Instalar Perl - www.activestate.com
  2. Ejecute el "Símbolo del sistema de herramientas cruzadas de Visual Studio 2008 x64" (Nota: el símbolo del sistema normal NO FUNCIONARÁ).
  3. Configurar con perl Configurar VC-WIN64A no compartido sin idea
  4. Ejecutar: ms / do_win64a
  5. EDITE ms / nt.mak y cambie "32" a "64" en los directorios de salida:

# The output directory for everything intersting OUT_D=out64.dbg # The output directory for all the temporary muck TMP_D=tmp64.dbg # The output directory for the header files INC_D=inc64 INCO_D=inc64/openssl

  1. EDITE ms / nt.mak y elimine bufferoverflowu.lib de EX_LIBS si obtiene un error al respecto.
  2. Ejecutar: nmake -f ms / nt.mak
  3. EDITAR el archivo ms / do_win64a y AGREGAR "depurar" a todas las líneas, excepto el "ml64" y las dos últimas líneas
  4. Ejecutar: ms / do_win64a
  5. Repita los pasos 4 y 5
  6. ¡EDITA el archivo ms / nt.mak y ADD / Zi a la lista CFLAG!
  7. Ejecutar: nmake -f ms / nt.mak

Si está compilando en cygwin, puede usar la siguiente secuencia de comandos, suponga que MSDEVPATH ya se ha establecido en su directorio de Visual Studio.

echo "Building x64 OpenSSL" # save the path of the x86 msdev MSDEVPATH_x86=$MSDEVPATH # and set a new var with x64 one MSDEVPATH_x64=`cygpath -u $MSDEVPATH/bin/x86_amd64` # now set vars with the several lib path for x64 in windows mode LIBPATH_AMD64=`cygpath -w $MSDEVPATH_x86/lib/amd64` LIBPATH_PLATFORM_x64=`cygpath -w $MSDEVPATH_x86/PlatformSDK/lib/x64` # and set the LIB env var that link looks at export LIB="$LIBPATH_AMD64;$LIBPATH_PLATFORM_x64" # the new path for nmake to look for cl, x64 at the start to override any other msdev that was set previously export PATH=$MSDEVPATH_x64:$PATH ./Configure VC-WIN64A zlib-dynamic --prefix=$OUT --with-zlib-include=zlib-$ZLIB_VERSION/include --with-zlib-lib=zlib-$ZLIB_VERSION/x64_lib # do the deed ms/do_win64a.bat $MSDEVPATH_x86/bin/nmake -f ms/ntdll.mak ${1:-install}


Solucioné el problema de esta manera, usando la fuente 1.0.1c:

Agregue este bloque a util/pl/VC-32.pl , justo antes de $o=''//'; línea.

if ($debug) { $ssl .= ''d''; $crypto .= ''d''; }

Agregue este bloque a util/pl/VC-32.pl , justo antes de la línea if ($debug) .

if ($FLAVOR =~ /WIN64/) { $out_def =~ s/32/64/; $tmp_def =~ s/32/64/; $inc_def =~ s/32/64/; }

Luego crea todas las variedades:

setenv /x86 /release perl Configure VC-WIN32 --prefix=build -DUNICODE -D_UNICODE ms/do_ms nmake -f ms/ntdll.mak setenv /x64 /release perl Configure VC-WIN64A --prefix=build ms/do_win64a.bat nmake -f ms/ntdll.mak setenv /x86 /debug perl Configure debug-VC-WIN32 --prefix=build -DUNICODE -D_UNICODE ms/do_ms move /y ms/libeay32.def ms/libeay32d.def move /y ms/ssleay32.def ms/ssleay32d.def nmake -f ms/ntdll.mak setenv /x64 /debug perl Configure debug-VC-WIN64A --prefix=build ms/do_win64a.bat move /y ms/libeay32.def ms/libeay32d.def move /y ms/ssleay32.def ms/ssleay32d.def nmake -f ms/ntdll.mak


También puede usar MSYS + mingw-w64 :

1) descarga y extrae msys a C: / msys
2) descarga y extrae mingw-w64 a c: / mingw64
3) ejecutar la secuencia de comandos postinstall msys. Cuando solicite su instalación de mingw, apúntela a C: / mingw64 / bin
4) Extraiga una instantánea diaria de openssl (la versión 1.0.0 tiene un error). En el dir de origen ejecute configure mingw64
hacer
hacer cheque
hacer la instalación
5) openssl está instalado en / local /


Usa Conan . Es muy simple de instalar y usar.

Puede solicitar los archivos listos para su uso. Por ejemplo, para Linux x64 o uso con Visual Studio 2012. Aquí una instrucción de muestra:

conan install OpenSSL/1.0.2g@lasote/stable -s arch="x86_64" -s build_type="Debug" -s compiler="gcc" -s compiler.version="5.3" -s os="Linux" -o 386="False" -o no_asm="False" -o no_rsa="False" -o no_cast="False" -o no_hmac="False" -o no_sse2="False" -o no_zlib="False" ...