Posted by: narkoticro on: 8 iulie 2009
Acesta este primul articol dintr-o serie, la sfârșitul căreia vom putea să construim fără probleme orice biblioteca de care avem nevoie. Despre biblioteca OpenSSL puteți afla mai multe detalii accesând acest link.
De-a lungul timpului am observat că cel mai bine este să am toate codurile sursă pe o partiție / hard disk separat(ă), eventual criptat(ă) (Cryptic Disk pentru XP și Bitlocker pentru Vista / Windows 7). În acest sens, în toate articolele pe această temă voi face referință la o partiție Z unde vor fi stocate toate codurile sursă și la partiția de sistem C. Dacă nu aveți o partiție disponibilă pentru codurile sursă sau un hard disk pe care să-l puteți folosi, cel mai ușor mod este de a mapa un drive pe folder-ul rădăcină unde sunt sursele. În această partiție (Z:\) se va crea un folder Biblioteci în care vom depozita toate bibliotecile cu care vom lucra. Din start vreau să menționez că toate bibliotecile trbuiesc construite cu același compilator, pentru a evita problemele (care vor apărea cu siguranță) la link-area aplicațiilor dar și a altor biblioteci.
Mai întâi va trebui sa download-ati urmatoarele:
Selectați toate componentele instalării iar calea de instalare este bine să rămână cea sugerată de installer, și anume C:\Perl. ATENȚIE: dacă totși vă decideți să instalați în altă parte distribuția Perl, calea de instalare NU trebuie să conțină spații și este de preferat să nu fie prea lungă pentru că nu se vor genera corect fișierele pentru crearea bibliotecilor.
Acum mai trebuie făcut un mic artificiu la consola Visual Studio. În sensul acesta, la calea C:\Program Files\Microsoft Visual Studio 8\Common7\Tools (așa cum o am eu pentru Visual Studio 2005) se găsește fișieul vsvars32.bat. Deschideți acest fișier cu un editor text și la linia ce începe cu @set PATH= inserați C:\Perl\site\bin;C:\Perl\bin; (sau calea aferentă distribuției ActiveState Perl de pe sistemul dvs.). Salvați fișierul.
Arhiva conține folder-ul openssl-0.9.8k cu toate fișierele aferente construirii bibliotecilor. Dezarhivați acest folder la calea care am stabilit-o mai sus (Z:\Biblioteci). Cel mai bine este să păstrați și arhiva pentru o restaurare rapidă a fișierelor în cazul unei configurări greșite înainte de compilare.
Porniți Visual Studio. Porniți consola de la meniul Tools, Visual Studio Command Prompt. Navigați până la folder-ul Z:\Biblioteci\openssl-0.9.8k. Acolo tastați:
1. pentru configurare: perl Configure VC-WIN32 --prefix="Z:/openssl"
ATENȚIE: la prefix trebuie folosit / în loc de \.
2. dacă aveți instalat Visual Studio Express tastați ms\do_ms.bat, iar pentru Visual Studio .NET/2005/2008 ms\do_masm.bat. În cazul în care ați respectat toate indicațiile mele până la momentul de față, nu trebuie să apară vreo eroare în consolă.
3. build-ul efectiv: pentru dll-uri: nmake -f ms\ntdll.mak, pentru bibliotecă statică: nmake -f ms\nt.mak.
Acum avem construite variantele dinamice și statice ale bibliotecilor OpenSSL, dar în varianta Release care este setată implicit. Vom avea nevoie și de variantele Debug. Pentru acestea trebuie să mai facem ceva artificii. Mai întâi vom muta din folderul Z:\Biblioteci\openssl-0.9.8k\out32 fișierele libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Release\Static. Din folderul Z:\Biblioteci\openssl-0.9.8k\out32dll mutăm fișierele: libeay32.dll, ssleay32.dll, libeay32.exp, ssleay32.exp, libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Release\Dynamic. Să nu uităm că ne mai trebuie și fișierele de include care se găsesc în folderul Z:\Biblioteci\openssl-0.9.8k\inc32\openssl. Copiem aceste fișiere într-un folder Z:\Include\OpenSSL.
Să ne ocupăm acum de variantele Debug ale bibliotecilor. În folderul Z:\Biblioteci\openssl-0.9.8k\ms avem fișierul do_ms.bat (în cazul în care lucrați cu Visual Studio Express) sau fișierul do_masm.bat (în cazul în care folosiți Visual Studio .NET/2005/2008). În principiu e fișierul rulat la pasul 2 de la build. Încărcăm fișierul aferent într-un editor.
Modificăm
perl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.mak
perl util\mk1mf.pl no-asm VC-CE >ms\ce.mak
perl util\mk1mf.pl dll no-asm VC-CE >ms\cedll.mak
cu
perl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl debug dll no-asm VC-WIN32 >ms\ntdll.mak
perl util\mk1mf.pl debug no-asm VC-CE >ms\ce.mak
perl util\mk1mf.pl debug dll no-asm VC-CE >ms\cedll.mak
Modificăm
perl util\mk1mf.pl VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl dll VC-WIN32 >ms\ntdll.mak
cu
perl util\mk1mf.pl debug VC-WIN32 >ms\nt.mak
perl util\mk1mf.pl debug dll VC-WIN32 >ms\ntdll.mak
După această modificare trebuie refăcuți pașii 2 și 3 de la Build. Cand procedura de creare a luat sfârșit, au apărut folderele Z:\Biblioteci\openssl-0.9.8k\out32.dbg și Z:\Biblioteci\openssl-0.9.8k\out32dll.dbg. Din primul folder se mută fișierele libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Debug\Static, iar din al doilea, se mută fișierele libeay32.dll, ssleay32.dll, libeay32.exp, ssleay32.exp, libeay32.lib și ssleay32.lib într-un folder Z:\Biblioteci\OUT\Debug\Dynamic.
Ca ultim pas, curățăm folderele Z:\Biblioteci\openssl-0.9.8k\tmp32, Z:\Biblioteci\openssl-0.9.8k\tmp32.dbg, Z:\Biblioteci\openssl-0.9.8k\tmp32dll și Z:\Biblioteci\openssl-0.9.8k\tmp32dll.dbg. Cam asta a fost tot pentru bibliotecile OpenSSL. Aștept sugestii și întrebări. Succes!