Qt 5 / QtWebkit can make use of OpenSSL, which MinGW distributions do not ship.
Pre-built packages
The Win32OpenSSL project [slproweb.com] provides pre-compiled libraries for both 32 and 64 bit. However, these depend on the Microsoft Visual C++ 2008 runtime being installed.
Compiling on your own
Requirements
- MSYS command prompt (an sh shell + some UNIX tools, get it fromhttp://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/MSYS-1.0.11.exe/download?use_mirror=garr. It’s also an (optional) part of mingw.org installer.)
- Perl
- Working MinGW, or MinGW-w64 toolchain
How to build
- Download latest OpenSSL from http://www.openssl.org/source (e.g. openssl-1.0.1c.tar.gz)
- Start a MSYS command prompt (C:\msys\1.0\msys.bat)
- Extract tar.gz using MSYS tar (and ignore the symlink warnings)
- don’t use 7zip or other apps, since they fail to set up any symlinks! tar will also complain about symlinks, but compilation will still succeed.
-
$ tar xvzf openssl -1.0.1c. tar. gz
-
$ cd openssl -1.0.1c
Check that gcc is in PATH, otherwise add it, e.g.
-
$ export PATH =/c /Mingw -builds /bin :$PATH
for MinGW (32 bit) do:
-
$ . /Configure --prefix =$PWD /dist no -idea no -mdc2 no -rc5 shared mingw
for MinGW-w64 do:
-
$ . /Configure --prefix =$PWD /dist no -idea no -mdc2 no -rc5 shared mingw64
Compile & install:
-
$ make depend && make && make install
Errors
If you run into
-
perl asm /sha1 -x86_64. pl mingw64 > sha1 -x86_64. s
-
gcc -I.. -I.. /.. -I.. /modes -I.. /asn1 -I.. /evp -I.. /.. /include -D_WINDLL -DOPENSSL_PIC -DOPENSSL_TH
-
READS -D_MT -DDSO_WIN32 -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -DOPENSSL_IA
-
32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -
-
DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -c -o sha1 -x86_
-
64. o sha1 -x86_64. s
-
sha1 -x86_64. s : Assembler messages :
-
sha1 -x86_64. s : 1824 : Warning : end of file not at end of a line ; newline inserted
-
sha1 -x86_64. s : 2183 : Error : number of operands mismatch for `rol '
-
make[2]: *** [sha1-x86_64.o] Error 1
-
make[2]: Leaving directory `/d/dev/tmp/openssl-1.0.1c/crypto/sha'
-
make [ 1 ] : *** [subdirs ] Error 1
-
make [ 1 ] : Leaving directory ` /d /dev /tmp /openssl -1.0.1c /crypto '
-
make: *** [build_crypto] Error 1
check out http://openssl.6102.n7.nabble.com/Compile-error-with-MinGW-w64-td36657.html
- Use MSYS perl
- or change crypto/perlasm/x86_64-xlate.pl as mentioned in the e-mail thread.
Using it
Add the bin, include, lib folders to your compilation environment, e.g. for cmd.exe:
-
C :\ > set PATH =%PATH %;C :\openssl -1.0.1c\dist\bin
-
C :\ > set INCLUDE =%INCLUDE %;C :\openssl -1.0.1c\dist\include
-
C :\ > set LIB =%LIB %;C :\openssl -1.0.1c\dist\lib
When you now run Qt’s configure.exe openssl should be detected, and Qt links against the libraries.