Comment comstackr OpenSSL sous Windows?

J’ai suivi les instructions du manuel d’ utilisation OpenSSL , qui renvoie à un guide de 3noch pour la compilation d’OpenSSL. Voici les outils / versions que j’utilise:

  • ActiveState Perl v5.20.2
  • Microsoft Visual Studio 2012
  • Netwide Assembler (NASM) v2.12.02
  • OpenSSL 1.0.2j (tarball source)

En suivant les instructions, je suis capable d’exécuter les commandes suivantes sans problème:

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32 ms\do_ms 

Ensuite, quand je vais exécuter

 nmake -f ms\nt.mak 

Je reçois le suivant

  Assembling: tmp32\sha1-586.asm tmp32\sha1-586.asm(1432) : error A2070:invalid instruction operands tmp32\sha1-586.asm(1576) : error A2070:invalid instruction operands NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0 \VC\BIN\ml.EXE"' : return code '0x1' Stop. 

Après avoir examiné cette question, j’ai trouvé un article de blog par HostageBrain qui mentionne cette erreur exacte, indiquant qu’il faut utiliser nasm pour effectuer la compilation. Donc, je suis passé à cette séquence de commandes:

 perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32 ms\do_nasm nmake -f ms\nt.mak 

Cependant, une fois que je suis passé à la variante NASM, je reçois les erreurs suivantes:

 tmp32\sha1-586.asm:1: error: parser: instruction expected tmp32\sha1-586.asm:2: error: parser: instruction expected tmp32\sha1-586.asm:3: error: parser: instruction expected tmp32\sha1-586.asm:4: warning: label alone on a line without a colon might be in error tmp32\sha1-586.asm:5: warning: label alone on a line without a colon might be in error tmp32\sha1-586.asm:6: warning: label alone on a line without a colon might be in error tmp32\sha1-586.asm:7: error: symbol `IF' redefined tmp32\sha1-586.asm:7: error: parser: instruction expected tmp32\sha1-586.asm:8: error: parser: instruction expected tmp32\sha1-586.asm:9: error: comma expected after operand 1 

Ce que je recherche, c’est de pouvoir comstackr OpenSSL dans des fichiers .lib auxquels je peux ensuite accéder à partir d’autres projets C ++, par exemple lors de la compilation de FreeTDS.

Sur la même page de mon blog que vous référez, je décris également le cas «no-asm» – cette affaire est plus simple pour la compilation (elle ne nécessitera pas de nasmos), mais l’inconvénient est que certaines performances seront 2x-4x plus lentes que versions assembleur. Si votre cas peut accepter cette performance, essayez de comstackr le cas “no-asm”.

 perl Configure VC-WIN32 no-asm --prefix=C:\Build-OpenSSL-VC-32 

Je sais que c’est un ancien message, mais pour les autres utilisateurs ayant des problèmes d’parsing NASM, voici la solution:

Une fois que vous exécutez soit ms \ do_ms.bat (pour utiliser masm) ou ms \ do_nasm.bat (pour utiliser nasm), vous ne pouvez pas simplement basculer vers l’autre sans effacer d’abord le répertoire tmp32, sinon perl ne régénérera jamais le fichiers .asm correctement. Les erreurs d’parsing que vous obtenez proviennent de tentatives de compilation d’un fichier au format masm.

Le moyen le plus simple de nettoyer tmp32 consiste à exécuter “nmake -f ms \ nt.mak clean”.

J’ai construit la bibliothèque à partir d’une invite de commande standard sous Windows 10 avec VS 2015 avec les commandes suivantes (version de débogage indiquée):

 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" perl Configure debug-VC-WIN64A --prefix=C:\Path\to\target\folder ms\do_win64a nmake -f ms\ntdll.mak cd out32dll.dbg ..\ms\test cd .. nmake -f ms\ntdll.mak install 

Répondre à cette très vieille question. Il y a quelques problèmes associés à sa construction sous x64, y compris la frappe de “assembleurs non trouvés”, le téléchargement de NASM et l’ajout de chemin, etc. MSYS2 offre une solution très simple.

Installez MSYS2. Assurez-vous d’avoir la chaîne d’outils nécessaire (voir le guide de pacman). Suivez ensuite les étapes ci-dessous: $ Launch msys2_shell.cmd -mingw64

$ wget -c ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/openssl-1.0.2o.tar.gz

$ tar -xzvf openssl-1.0.2o.tar.gz openssl-1.0.2o /

$ cs openssl-1.0.2o /

$. / configure le mingw64 partagé

$ make

C’est tout. Dans le répertoire apps, vous obtiendrez l’exécutable openssl avec les bibliothèques.

-Sreejith. D. Menon