Comment comstackz-vous OpenSSL pour x64?

Après avoir suivi les instructions dans INSTALL.W64, j’ai deux problèmes:

  • Le code est toujours écrit dans le dossier “out32”. Je dois être en mesure de créer des liens vers les versions 32 bits et 64 bits de la bibliothèque sur mon poste de travail. Je ne souhaite donc pas que les versions 64 bits réduisent les bibliothèques 32 bits.
  • La sortie est toujours 32 bits! Cela signifie que je reçois des erreurs de “symbole externe non résolu” lorsque j’essaie de créer un lien vers les bibliothèques à partir d’une application x64.

Pour comstackr les bibliothèques statiques (à la fois la version et le débogage), voici ce que vous devez faire:

  1. Installez Perl – http://www.activestate.com
  2. Exécutez l’invite de commande “Visual Studio 2008 x64 Cross Tools” (Remarque: l’invite de commande standard NE FONCTIONNE PAS.)
  3. Configurez avec perl Configurez VC-WIN64A no-shared no-idea
  4. Exécuter: ms \ do_win64a
  5. EDIT ms \ nt.mak et remplacez “32” par “64” dans les répertoires de sortie:
     # Le répertoire de sortie pour tout ce qui est intéressant
     OUT_D = out64.dbg
     # Le répertoire de sortie pour tous les muck temporaires
     TMP_D = tmp64.dbg
     # Le répertoire de sortie des fichiers d'en-tête
     INC_D = inc64
     INCO_D = inc64 \ openssl
  1. EDIT ms \ nt.mak et supprime bufferoverflowu.lib de EX_LIBS si tu as une erreur à ce sujet.
  2. Exécuter: nmake -f ms \ nt.mak
  3. EDIT le fichier ms \ do_win64a et ADD “debug” à toutes les lignes, sauf le “ml64” et les deux dernières lignes
  4. Exécuter: ms \ do_win64a
  5. Répétez les étapes 4 et 5
  6. EDIT le fichier ms \ nt.mak et ADD / Zi à la liste CFLAG!
  7. Exécuter: nmake -f ms \ nt.mak

J’ai résolu le problème de cette façon, en utilisant la source 1.0.1c:

Ajoutez ce bloc à util/pl/VC-32.pl , juste avant le $o='\\'; ligne.

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

Ajoutez ce bloc à util/pl/VC-32.pl , juste avant la ligne if ($debug) .

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

Ensuite, construisez toutes les variétés:

 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 

Utilisez Conan . Il est très simple à installer et à utiliser.

Vous pouvez demander les fichiers prêts à l’emploi. Par exemple pour Linux x64 ou utilisation avec Visual Studio 2012. Voici un exemple d’instruction:

conan install OpenSSL/1.0.2g@lasote/stable -s arch="x86_64" -s build_type="Debug" -s comstackr="gcc" -s comstackr.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" ...

Selon la documentation officielle:

“Vous serez peut-être surpris: les artefacts 64 bits sont effectivement générés dans les sous-répertoires out32 * et portent les noms se terminant par * 32.dll. Fait est que la cible de compilation 64 bits est jusqu’à présent un changement incrémentiel par rapport à la cible Windows 32 bits existante. les drapeaux sont toujours étiquetés “32” bien que ceux-ci s’appliquent aux cibles 32 et 64 bits. ”

Donc, la première réponse n’est plus nécessaire.

Les instructions peuvent être trouvées ici:

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

Si vous construisez dans cygwin, vous pouvez utiliser le script suivant, supposez que MSDEVPATH a déjà été défini sur votre répertoire 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} 

Vous pouvez également utiliser MSYS + mingw-w64 :

1) télécharger et extraire msys vers C: \ msys
2) télécharger et extraire mingw-w64 vers c: \ mingw64
3) exécutez le script de post-installation msys. Lorsqu’il demande votre installation mingw, pointez-le sur C: \ mingw64 \ bin
4) Extraire un instantané openssl quotidien (la version 1.0.0 a un bogue). Dans le répertoire source exécutez configure mingw64
faire
faire vérifier
faire installer
5) openssl est installé sur / local /