Skip to content

Impossible to compile #9

@sxiii

Description

@sxiii

Greetings.

I've tried to compile this code on:

  • Ubuntu 19.10
  • Manjaro recent 18.1.4

The error I got everywhere is:

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/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:120:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509;
                ^~~~~~~
ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::version() const’:
ssl/qsslcertificate_openssl.cpp:87:68: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
             QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
                                                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:120:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509;
                ^~~~~~~
ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::serialNumber() const’:
ssl/qsslcertificate_openssl.cpp:96:45: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
         ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
                                             ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:120:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509;
                ^~~~~~~
ssl/qsslcertificate_openssl.cpp: In member function ‘QSslKey QSslCertificate::publicKey() const’:
ssl/qsslcertificate_openssl.cpp:232:32: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
     X509_PUBKEY *xkey = d->x509->cert_info->key;
                                ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:120:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509;
                ^~~~~~~
ssl/qsslcertificate_openssl.cpp:236:29: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
                             ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
ssl/qsslcertificate_openssl.cpp:240:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
ssl/qsslcertificate_openssl.cpp:245:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) {
                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
ssl/qsslcertificate_openssl.cpp:250:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/comp.h:16,
                 from /usr/include/openssl/ssl.h:17,
                 from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
                 from ../../include/QtNetwork/5.6.2/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/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
make[3]: *** [Makefile:22107: .obj/qsslcertificate_openssl.o] Error 1
make[3]: Leaving directory '/home/sb/Libraries/qt5_6_2/qtbase/src/network'
make[2]: *** [Makefile:244: sub-network-make_first] Error 2
make[2]: Leaving directory '/home/sb/Libraries/qt5_6_2/qtbase/src'
make[1]: *** [Makefile:46: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/sb/Libraries/qt5_6_2/qtbase'
make: *** [Makefile:44: module-qtbase-make_first] Error 2

Any clues? Should I try to compile this on Ubuntu 14.04 in docker?

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions