собираем ssleay32.lib под Qt 4.8.1

Продолжаем собирать openssl 1.0.2 под Qt Creator 2.4.1 с библиотекой Qt 4.8.1. 

Тут речь о том как настроить проект pro для сборки самой библиотеки ssleay32 из исходников. Делать это в принципе не обязательно. То есть это только для общего развития. Так как ssleay32  собирается прекрасно из поставки , главное чтобы настройки сборки (тулчейн) был одинаковый в qt и в openssl.

Ранее мы уже собрали библиотеку libeay32.lib на соседней странице .

Теперь займемся библиотекой ssleay32.lib , которая в свою очередь будет использовать криптографию libeay32.lib.

Так будет выглядеть ssl.pro :

INCLUDEPATH  = $$PWD/.. $$PWD/../ms $$PWD/../test $$PWD/../crypto $$PWD/../crypto/err
DEPENDPATH  = $$PWD/.. $$PWD/../ms $$PWD/../test $$PWD/../crypto $$PWD/../crypto/err

DEFINES  = OPENSSL_THREADS DSO_WIN32 OPENSSL_SYSNAME_WIN32 WIN32_LEAN_AND_MEAN L_ENDIAN _CRT_SECURE_NO_DEPRECATE WINSOCK_DEPRECATED_NO_WARNINGS OPENSSL_USE_APPLINK OPENSSL_NO_RC5 OPENSSL_NO_MD2 OPENSSL_NO_SSL2 OPENSSL_NO_KRB5 OPENSSL_NO_JPAKE OPENSSL_NO_WEAK_SSL_CIPHERS OPENSSL_NO_STATIC_ENGINE _WINDLL  OPENSSL_BUILD_SHLIBSSL

TARGET      = ssleay32
TEMPLATE    = lib

QT       -= gui

CONFIG  = staticlib   # !!!!! будет lib , а не  dll !!!!

OBJECTS_DIR     = tmp\\obj\\$$out_dir
MOC_DIR         = tmp\\moc\\$$out_dir
RCC_DIR         = tmp\\rcc\\$$out_dir
UI_DIR          = ui # чтобы из других проектов не подтягивать чужие ui_ ... .h

win32:LIBS  = ws2_32.lib gdi32.lib advapi32.lib crypt32.lib user32.lib

include(my2/my2.pri)

HEADERS  = \
    dtls1.h \
    kssl.h \
    kssl_lcl.h \
    srtp.h \
    ssl.h \
    ssl_locl.h \
    ssl2.h \
    ssl3.h \
    ssl23.h \
    tls1.h \
    ../e_os.h \
    ../openssl/x509v3.h \
    ../openssl/x509_vfy.h \
    ../openssl/x509.h \
    ../openssl/whrlpool.h \
    ../openssl/ui_compat.h \
    ../openssl/ui.h \
    ../openssl/txt_db.h \
    ../openssl/ts.h \
    ../openssl/tls1.h \
    ../openssl/symhacks.h \
    ../openssl/stack.h \
    ../openssl/ssl23.h \
    ../openssl/ssl3.h \
    ../openssl/ssl2.h \
    ../openssl/ssl.h \
    ../openssl/srtp.h \
    ../openssl/srp.h \
    ../openssl/sha.h \
    ../openssl/seed.h \
    ../openssl/safestack.h \
    ../openssl/rsa.h \
    ../openssl/ripemd.h \
    ../openssl/rc4.h \
    ../openssl/rc2.h \
    ../openssl/rand.h \
    ../openssl/pqueue.h \
    ../openssl/pkcs12.h \
    ../openssl/pkcs7.h \
    ../openssl/pem2.h \
    ../openssl/pem.h \
    ../openssl/ossl_typ.h \
    ../openssl/opensslv.h \
    ../openssl/opensslconf.h \
    ../openssl/ocsp.h \
    ../openssl/objects.h \
    ../openssl/obj_mac.h \
    ../openssl/modes.h \
    ../openssl/mdc2.h \
    ../openssl/md5.h \
    ../openssl/md4.h \
    ../openssl/lhash.h \
    ../openssl/kssl.h \
    ../openssl/krb5_asn.h \
    ../openssl/idea.h \
    ../openssl/hmac.h \
    ../openssl/evp.h \
    ../openssl/err.h \
    ../openssl/engine.h \
    ../openssl/ecdsa.h \
    ../openssl/ecdh.h \
    ../openssl/ec.h \
    ../openssl/ebcdic.h \
    ../openssl/e_os2.h \
    ../openssl/dtls1.h \
    ../openssl/dso.h \
    ../openssl/dsa.h \
    ../openssl/dh.h \
    ../openssl/des_old.h \
    ../openssl/des.h \
    ../openssl/crypto.h \
    ../openssl/conf_api.h \
    ../openssl/conf.h \
    ../openssl/comp.h \
    ../openssl/cms.h \
    ../openssl/cmac.h \
    ../openssl/cast.h \
    ../openssl/camellia.h \
    ../openssl/buffer.h \
    ../openssl/bn.h \
    ../openssl/blowfish.h \
    ../openssl/bio.h \
    ../openssl/asn1t.h \
    ../openssl/asn1_mac.h \
    ../openssl/asn1.h \
    ../openssl/aes.h

SOURCES  = \
    bio_ssl.c \
    d1_both.c \
    d1_clnt.c \
    d1_lib.c \
    d1_meth.c \
    d1_pkt.c \
    d1_srtp.c \
    d1_srvr.c \
    kssl.c \
    s2_clnt.c \
    s2_enc.c \
    s2_lib.c \
    s2_meth.c \
    s2_pkt.c \
    s2_srvr.c \
    s3_both.c \
    s3_cbc.c \
    s3_clnt.c \
    s3_enc.c \
    s3_lib.c \
    s3_meth.c \
    s3_pkt.c \
    s3_srvr.c \
    s23_clnt.c \
    s23_lib.c \
    s23_meth.c \
    s23_pkt.c \
    s23_srvr.c \
    ssl_algs.c \
    ssl_asn1.c \
    ssl_cert.c \
    ssl_ciph.c \
    ssl_conf.c \
    ssl_err.c \
    ssl_err2.c \
    ssl_lib.c \
    ssl_rsa.c \
    ssl_sess.c \
    ssl_stat.c \
    ssl_txt.c \
    ssl_utst.c \
    t1_clnt.c \
    t1_enc.c \
    t1_ext.c \
    t1_lib.c \
    t1_meth.c \
    t1_reneg.c \
    t1_srvr.c \
    t1_trce.c \
    tls_srp.c

win32 {
  RC_FILE      = $$PWD/../ms/version32.rc
}

win32{
    CONFIG  = embed_manifest_exe
    #QMAKE_LFLAGS_WINDOWS  = /MANIFESTUAC:"level='requireAdministrator'"
}


win32:CONFIG(release, debug|release): LIBS  = -L$$OUT_PWD/../crypto/release/ -llibeay32
else:win32:CONFIG(debug, debug|release): LIBS  = -L$$OUT_PWD/../crypto/debug/ -llibeay32

INCLUDEPATH  = $$PWD/../crypto
DEPENDPATH  = $$PWD/../crypto

Чтобы ушли ошибки компиляции / сборки убрали некоторые файлы . Но здесь правки намного меньше получилось чем при сборке libeay32 :

 ssl (*.*)
	- ssl_task.c   VMS
	- bad_dtls_test.c 	main
	- clienthellotest.c 
	- dtlstest.c
	- fatalerrtest.c
	- ssltest.c
	- sslv2conftest.c

Теперь библиотека ssleay32.lib тоже собрана и можно наконец-то переходить к изучению и тестированию работы из под Qt Creator 2.4.1 и Qt 4.8.1 с отладчиком и т.д.