2016-02-18 9 views
6

ile derlerken hata olacak. Başım yakında patlayacak ... Qt -sensl-linked ile qt derlemek istiyorum, böylece openssl kütüphaneleri qt kitaplıklarına bağlanır. Zaten birçok seçenek çalıştı ve derleme benim çıkış daima:Qt5'i openssl bağlantılı

ssl/qsslcertificate_openssl.cpp: In function ‘uint qHash(const QSslCertificate&, uint)’: 
ssl/qsslcertificate_openssl.cpp:63:30: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’ 
    return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed); 
         ^
In file included from /usr/local/include/openssl/crypto.h:131:0, 
      from /usr/local/include/openssl/comp.h:59, 
      from /usr/local/include/openssl/ssl.h:148, 
      from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, 
      from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, 
      from ssl/qsslsocket_p.h:55, 
      from ssl/qsslsocket_openssl_p.h:63, 
      from ssl/qsslsocket_openssl_symbols_p.h:64, 
      from ssl/qsslcertificate_openssl.cpp:35: 
/usr/local/include/openssl/ossl_typ.h:160:16: note: forward declaration of ‘X509 {aka struct x509_st}’ 
typedef struct x509_st X509; 

ben derlenmiş openssl ve benim derlenmiş kütüphaneleri geçen qt derleme çalıştı:

OPENSSL_LIBS='-L/opt/openssl_build/lib -lssl -lcrypto' ./configure -prefix /opt/qt5.5.1_linux_staticssl -opensource -confirm-license -release -nomake examples -nomake tests -static -openssl -no-opengl -no-libpng -no-pulseaudio -no-linuxfb -no-gif -no-gstreamer -no-gtkstyle -no-directfb -no-gui -no-eglfs -no-glib -I /opt/openssl_build/include/openssl -L /opt/openssl_build/lib -no-xcb 

hata eski openssl yükleniyor gibi görünüyor biliyorum kütüphaneler ama bu yolu değiştirmeyi denedim, bu yüzden onları bulamıyor ve yenilerini yüklemek için zorluyor. Başka ne yapacağımı bilmiyorum. Qt sürümü 5.5.1 openssl 1.0.1 ve g ++ 5.2'dir.

+2

sizden OpenSSL'i aldın simon-Warta için

OPENSSL_LIBS='-L/opt/openssl_build_stable/lib -lssl -lcrypto' ./configure -prefix /opt/qt5.5.1_linux_staticssl -opensource -confirm-license -release -nomake examples -nomake tests -static -openssl-linked -I /opt/openssl_build_stable/include/openssl -L /opt/openssl_build_stable/lib 

Teşekkür? OpenSSL_1_0_1 kararlı (ör., 1.0.1r sürümü) dalında, 'x509_st 'yapısı x509.h genel başlığında tanımlanmıştır. Mevcut master üzerinde, dahili/x509_int.h' dahili bir başlıkta tanımlanmıştır, bu da soruna neden olabilir. –

+0

Çalıştı. Ben 1.0.1 derledim ve çalıştı qt denedim, gits'ın openssl master dalını derliyordum. Sistemin openssl kütüphanelerine giden yolu geçici olarak değiştirmek zorunda kaldım, böylece derlediğim 1.0.1'i kullanmam gerekti. Teşekkürler – nicolaszb

cevap

5

Ben 1.0.2 ile çalışıp çalışmadığını bilmiyorum, openssl sürüm 1.0.1 ile Qt inşa etmek zorunda kaldı. Sistemin openssl kütüphanelerinin yolunu değiştirmek zorunda kaldım, böylece Qt yaptığımları kullanmak zorunda kaldı. kaynağın dizininde çalışan openssl derlemek için Hatları: Qt için

./config --prefix=/opt/openssl_build_stable -shared 
make 
make test 
sudo make install 

Benim conf hattı:

+0

Ayrıca bu güzel belgelere göre 1.0.2 ile çalışmalıdır: https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes (Bkz. 5.1 "Artık çalışmıyor -> Qt") – Anonymous