Tuesday, June 17, 2014

Tutorial compilare Openssl si curl cu ajutorul MinGW32 si msys




   Acest tutorial este adresat in mare parte incepatorilor care doresc sa compileze aceste librarii fara batai de cap.
Pentru a putea efectua acesti pasi aveti nevoie de urmatoarele:
   - Mingw32 si msys, compilator si mediu de dezvoltare cli ce pot fi descarcate de aici.
   - Perl ce poate fi descarcat de aici.
   - Libraria Openssl ce poate fi descarcata de aici, descarcati ultima versiune a arhivei(de obicei cea marcata cu rosu). Pentru a o dezarhiva sugerez sa folositi 7zip deoarece winrar se pare ca da rateuri la arhive tar.gz
   - Libraria libcurl ce poate fi descarcata de aici.

Pentru acesst tutorial vom face cateva presupuneri:
   - Ati instalat compilatorul si msys la adresa C:/MinGW/ respectiv C:/MinGW/msys/ (daca instalati compilatorul la alta adresa, asigurati-va ca adresa respectiva nu contine spatii si alte semne
   - Folderul in care se gaseste compilatorul(executabilul mingw32-g++/mingw32-gcc/mingw32-make) este C:/MinGW/bin
   - Folderul in care se gasesc headerele este C:/MinGW/include
   - Folderul in care se gasesc librariile statice(nume_librarie.a) este C:/MinGW/lib

   Incepem cu libraria OpenSSL(la data creeri acestui tutorial aceasta era la versiunea 1.0.1h)
   Dupa ce dezarhivam libraria ar trebui sa ramanem cu un folder numit openssl-1.0.1h. Copiem acest folder in folderul C:/Mingw/msys/home/Nume_userul_vostru/. Pornim msys(C:/MinGW/msys/1.0/msys.bat).
Schimbam directorul de lucru din cel in care porneste msys in /home/openssl-1.0.1h. Aici executam comanda urmatoare:
 
./config --prefix=/mingw --openssldir=/openssl shared

--prefix=/mingw seteaza ca si compilator utilizat mingw
--openssldir=/openssl seteaza folderul in care fisierele rezultate in urma compilarii se vor salva. Acest folder se gasi in mod normal la aici: C:/MinGW/msys/1.0/openssl.
shared seteaza daca libraria va fi compilata sub forma de dll, sau sub forma de librarie statica(*.a)

Dupa ce procesul de configurare se inchieie rulam pe rand comenzile "make" si "make install".
Dupa ce termina si a 2-a comanda(make install) va trebui sa copiati din folderul C:/MinGw/msys/1.0/mingw cele 3 foldere, bin, include, lib in folderul C:/MinGW/msys/1.0/openssl. Acest pas va fi necesar pentru a putea compila libraria libcurl. Pentru a putea folosi ,mai usor, libraria aceasta in programele noastre este recomandat sa copiati cel putin folderele bin, include si lib din folderul c:/MinGW/msys/1.0/openssl in folderul C:/MinGW/ suprascriind folderele bin, include si lib din acest folder.

   Compilarea librariei libcurl(la data creeri acestui tutorial aceasta era la versiunea 7.30.0)
   Dupa ce dezarhivam libraria, ar trebui sa avem un folder numit curl-7.37.0. Copiem acest folder in folderul C:/MinGw/msys/1.0/home/Nume_userul_vostru. Mutam directorul de lucru din /home/openssl-1.0.1h in /home/curl-7.37.0.
Executam comanda
./configure --with-ssl=/openssl/

--with-ssl va seta ca libraria sa se compileze cu includerea librariei openssl si ca aceasta librarie se gaseste la adresa /openssl// . Dupa ce configurarea se incheie executam pe rand comenzile "make" si "make install"
Dupa ce "make install" termina de executat, daca nu au existat erori, vom gasi fisierele noastre in folderul C:/MinGW/msys/1.0/local. De aici copiem folderele bin, include, lib si share in folderul C:/MinGW/ suprascriind folderele deja existente.

In acest moment putem folosii librariile acesta pentru programele de care avem nevoie.
Pentru cei ce doresc cateva alternative, acestea exista.
Pentru Openssl avem urmatoarele:
PolarSSL si un tutorial despre cum sa il compilati aveti tot pe pagina lor aici. Aceasta implementare este disponibila atat sub liceenta open source cat si sub licenta platita.
Network Security Service(NSS) un proiect ce apartine fundatiei Mozila, ce include pe langa SSL/TSL mai multe metode de criptare a datelor utilizate in transferul de date.Aici aveti cateva informatii despre compilarea si utilizarea acestei librarii.
O alta alternativa open source(in mare parte, foloseste licenta LGPL 2.0) este GNUTLS. Aici aveti un tutorial ce ar trebui sa va ajute la compilarea acestei librarii.

Pentru LibCurl avem urmatoarele alternative:
WinInet este o alternativa ce functioneaza strict pe windows, pentru cei ce nu au o problema cu asta.Pentru aceasta "librarie"/Api aveti nevoie de minim Windows XP sau Windows Server 2003.
LibWWW este o alta alternativa, de data aceasta open source.

Daca aveti intrebari nu ezitati sa le puneti.
Sper sa va ajute.

Surse de inspiratie:
Stack Overflow
BowmanSolutions

No comments:

Post a Comment