Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Unable to build qtnetwork 5.15.11 due to invalid SSL

Unable to build qtnetwork 5.15.11 due to invalid SSL

Scheduled Pinned Locked Moved Unsolved General and Desktop
4 Posts 2 Posters 976 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alex B
    wrote on last edited by
    #1

    Hello guys,

    i am trying to update to the latest QT ver in Gentoo repo and cannot build the qtnetwork package due to this error:

    /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_SSL_get_peer_certificate(ssl_st*)':
    qsslsocket_openssl_symbols.cpp:(.text+0xc81): undefined reference to `SSL_get_peer_certificate'
    /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_EVP_PKEY_base_id(evp_pkey_st*)':
    qsslsocket_openssl_symbols.cpp:(.text+0xc91): undefined reference to `EVP_PKEY_base_id'
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:601: ../../lib/libQt5Network.so.5.15.11] Error 1
    
    

    So first i validated the build log and this is what i see:

    Checking for OpenSSL... 
    Trying source 0 (type openssl) of library openssl ...
    $OPENSSL_LIBS is not set.
      => source produced no result.
    Trying source 1 (type inline) of library openssl ...
      => source failed condition 'config.win32'.
    Trying source 2 (type inline) of library openssl ...
      => source failed condition 'config.msvc'.
    Trying source 3 (type inline) of library openssl ...
      => source failed condition 'config.android'.
    Trying source 4 (type inline) of library openssl ...
    + cd /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl && /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" QMAKE_AR=x86_64-pc-linux-gnu-ar QMAKE_CC=x86_64-pc-linux-gnu-gcc QMAKE_LINK_C=x86_64-pc-linux-gnu-gcc QMAKE_LINK_C_SHLIB=x86_64-pc-linux-gnu-gcc QMAKE_CXX=x86_64-pc-linux-gnu-g++ QMAKE_LINK=x86_64-pc-linux-gnu-g++ QMAKE_LINK_SHLIB=x86_64-pc-linux-gnu-g++ QMAKE_OBJCOPY=x86_64-pc-linux-gnu-objcopy QMAKE_RANLIB= QMAKE_STRIP=x86_64-pc-linux-gnu-strip 'QMAKE_CFLAGS=-march=znver3 -O2 -pipe' QMAKE_CFLAGS_RELEASE= QMAKE_CFLAGS_DEBUG= 'QMAKE_CXXFLAGS=-march=znver3 -O2 -pipe' QMAKE_CXXFLAGS_RELEASE= QMAKE_CXXFLAGS_DEBUG= 'QMAKE_LFLAGS=-Wl,-O1 -Wl,--as-needed' QMAKE_LFLAGS_RELEASE= QMAKE_LFLAGS_DEBUG= 'QMAKE_USE += openssl' 'QMAKE_LIBS_OPENSSL = -lssl -lcrypto' /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl
    + cd /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl && MAKEFLAGS= /usr/bin/gmake
    > x86_64-pc-linux-gnu-g++ -c -march=znver3 -O2 -pipe -w -fPIC  -I. -I/var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11/mkspecs/linux-g++ -o main.o main.cpp
    > x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -o openssl main.o   -lssl -lcrypto   
     => source accepted.
    test config.qtbase_network.libraries.openssl succeeded
    
    

    so seems like openssl is found correctly. next, it was set to the linked option by cmake:

    Note: Option 'gssapi' with value 'no' was specified twice
    
    Note: Option 'libproxy' with value 'no' was specified twice
    
    Note: Overriding option 'openssl' with 'linked' (was: 'no')
    
    Note: When linking against OpenSSL, you can override the default
    library names through OPENSSL_LIBS.
    For example:
        OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked
    
    

    but next it was failed with the error above:

    x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wl,--no-undefined -Wl,--version-script,QtNetwork.version -Wl,--enable-new-dtags -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5Network.so.5 -o libQt5Network.so.5.15.11 .obj/qnetworkaccessauthenticationmanager.o .obj/qnetworkaccessmanager.o .obj/qnetworkaccesscache.o .obj/qnetworkaccessbackend.o .obj/qnetworkaccessdebugpipebackend.o .obj/qnetworkaccessfilebackend.o .obj/qnetworkaccesscachebackend.o .obj/qnetworkcookie.o .obj/qnetworkcookiejar.o .obj/qnetworkrequest.o .obj/qnetworkreply.o .obj/qnetworkreplyimpl.o .obj/qnetworkreplydataimpl.o .obj/qnetworkreplyfileimpl.o .obj/qabstractnetworkcache.o .obj/qnetworkfile.o .obj/qhsts.o .obj/qhstspolicy.o .obj/qftp.o .obj/qnetworkaccessftpbackend.o .obj/qnetworkdiskcache.o .obj/qhstsstore.o .obj/bitstreams.o .obj/huffman.o .obj/hpack.o .obj/hpacktable.o .obj/http2frames.o .obj/http2streams.o .obj/http2protocol.o .obj/qabstractprotocolhandler.o .obj/qhttp2protocolhandler.o .obj/qhttpmultipart.o .obj/qhttpnetworkconnection.o .obj/qhttpnetworkconnectionchannel.o .obj/qhttpnetworkheader.o .obj/qhttpnetworkreply.o .obj/qhttpnetworkrequest.o .obj/qhttpprotocolhandler.o .obj/qhttpthreaddelegate.o .obj/qnetworkreplyhttpimpl.o .obj/qhttp2configuration.o .obj/qspdyprotocolhandler.o .obj/qnetworksession.o .obj/qnetworkconfigmanager.o .obj/qnetworkconfiguration.o .obj/qnetworkconfigmanager_p.o .obj/qbearerengine.o .obj/qbearerplugin.o .obj/qsharednetworksession.o .obj/qauthenticator.o .obj/qhostaddress.o .obj/qhostinfo.o .obj/qnetworkdatagram.o .obj/qnetworkinterface.o .obj/qnetworkproxy.o .obj/qurlinfo.o .obj/qdnslookup.o .obj/qdnslookup_unix.o .obj/qhostinfo_unix.o .obj/qnetworkinterface_linux.o .obj/qnetconmonitor_stub.o .obj/qnetworkproxy_generic.o .obj/qabstractsocketengine.o .obj/qabstractsocket.o .obj/qtcpsocket.o .obj/qudpsocket.o .obj/qtcpserver.o .obj/qsocks5socketengine.o .obj/qhttpsocketengine.o .obj/qnativesocketengine.o .obj/qnativesocketengine_unix.o .obj/qlocalsocket.o .obj/qlocalserver.o .obj/qlocalsocket_unix.o .obj/qlocalserver_unix.o .obj/qasn1element.o .obj/qssl.o .obj/qsslcertificate.o .obj/qsslcertificateextension.o .obj/qsslconfiguration.o .obj/qsslcipher.o .obj/qssldiffiehellmanparameters.o .obj/qsslellipticcurve.o .obj/qsslkey_p.o .obj/qsslerror.o .obj/qsslsocket.o .obj/qsslpresharedkeyauthenticator.o .obj/qocspresponse.o .obj/qdtls.o .obj/qsslsocket_openssl_symbols.o .obj/qssldiffiehellmanparameters_openssl.o .obj/qsslcertificate_openssl.o .obj/qsslellipticcurve_openssl.o .obj/qsslkey_openssl.o .obj/qsslsocket_openssl.o .obj/qsslcontext_openssl.o .obj/qdtls_openssl.o .obj/qpassworddigestor.o .obj/moc_qnetworkaccesscache_p.o .obj/moc_qnetworkaccessbackend_p.o .obj/moc_qnetworkaccessdebugpipebackend_p.o .obj/moc_qnetworkaccessfilebackend_p.o .obj/moc_qnetworkcookiejar.o .obj/moc_qnetworkreply.o .obj/moc_qabstractnetworkcache.o .obj/moc_qnetworkfile_p.o .obj/moc_qnetworkaccessftpbackend_p.o .obj/moc_qnetworkdiskcache.o .obj/moc_qhttp2protocolhandler_p.o .obj/moc_qhttpmultipart.o .obj/moc_qhttpnetworkreply_p.o .obj/moc_qhttpthreaddelegate_p.o .obj/moc_qnetworkreplyhttpimpl_p.o .obj/moc_qspdyprotocolhandler_p.o .obj/moc_qnetworkconfigmanager_p.o .obj/moc_qnetworksession_p.o .obj/moc_qbearerplugin_p.o .obj/moc_qhostinfo_p.o .obj/moc_qnetconmonitor_p.o .obj/moc_qdnslookup_p.o .obj/moc_qabstractsocketengine_p.o .obj/moc_qtcpsocket.o .obj/moc_qudpsocket.o .obj/moc_qsocks5socketengine_p.o .obj/moc_qhttpsocketengine_p.o .obj/moc_qnativesocketengine_p.o .obj/moc_qdtls.o  /usr/lib64/libQt5Core.so -pthread -lz -lssl -lcrypto
    /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_SSL_get_peer_certificate(ssl_st*)':
    qsslsocket_openssl_symbols.cpp:(.text+0xc81): undefined reference to `SSL_get_peer_certificate'
    /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_EVP_PKEY_base_id(evp_pkey_st*)':
    qsslsocket_openssl_symbols.cpp:(.text+0xc91): undefined reference to `EVP_PKEY_base_id'
    collect2: error: ld returned 1 exit status
    
    

    so i checked the source file mentioned in the error message:

    // Here we have the ones that make difference between OpenSSL pre/post v3:
    #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
    X509 *q_SSL_get1_peer_certificate(SSL *a);
    #define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate
    int q_EVP_PKEY_get_base_id(const EVP_PKEY *pkey);
    #define q_EVP_PKEY_base_id q_EVP_PKEY_get_base_id
    #else
    X509 *q_SSL_get_peer_certificate(SSL *a);
    int q_EVP_PKEY_base_id(EVP_PKEY *a);
    #endif // OPENSSL_VERSION_MAJOR >= 3
    
    QT_END_NAMESPACE
    
    

    which leads to the question: did it correctly read the openssl version as seems like it takes the "else" clause instead of 'if'. but i have installed openssl ver 3:

    admin@gentoo ~ $ equery list openssl 
     * Searching for openssl ...
    [IP-] [  ] dev-libs/openssl-3.0.11:0/3
    

    with the following use flags:

     * Searching for openssl ...
    [IP-] [  ] dev-libs/openssl-3.0.11:0/3
    admin@gentoo ~ $ equery uses  openssl 
    [ Legend : U - final flag setting for installation]
    [        : I - package is installed with flag     ]
    [ Colors : set, unset                             ]
     * Found these USE flags for dev-libs/openssl-3.0.11:
     U I
     - - abi_x86_32       : 32-bit (x86) libraries
     + + asm              : Support assembly hand optimized crypto functions (i.e. faster run time)
     - - fips             : Enable FIPS provider
     - - ktls             : Enable support for Kernel implementation of TLS (kTLS)
     - - rfc3779          : Enable support for RFC 3779 (X.509 Extensions for IP Addresses and AS Identifiers)
     + + sctp             : Support for Stream Control Transmission Protocol
     + + static-libs      : Build static versions of dynamic libraries as well
     - - test             : Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
     - - tls-compression  : Enable support for discouraged TLS compression
     - - vanilla          : Do not add extra patches which change default behaviour; DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically
     - - verify-sig       : Verify upstream signatures on distfiles
     - - weak-ssl-ciphers : Build support for SSL/TLS ciphers that are considered "weak"
    
    

    i had recompiled that with static-lib just recently but by default this flag is disabled. this is current qtnetwork config :

     * Searching for qtnetwork ...
    [I--] [??] dev-qt/qtnetwork-5.15.10-r3:5/5.15
    [ Legend : U - final flag setting for installation]
    [        : I - package is installed with flag     ]
    [ Colors : set, unset                             ]
     * Found these USE flags for dev-qt/qtnetwork-5.15.11:
     U I
     - - debug    : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
     - - gssapi   : Enable support for GSSAPI (virtual/krb5)
     - - libproxy : Use net-libs/libproxy for automatic HTTP/SOCKS proxy configuration
     - - sctp     : Support for Stream Control Transmission Protocol
     + + ssl      : Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security)
     - - test     : Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
    

    also i compiled the latest version available in the gentoo repo (openssl-3.1.4) and tried to rebuild qtnetwork but got the same error. i tried some other options, but already do not remember all of them.

    so any ideas how to resolve this?

    C 1 Reply Last reply
    0
    • A Alex B

      Hello guys,

      i am trying to update to the latest QT ver in Gentoo repo and cannot build the qtnetwork package due to this error:

      /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_SSL_get_peer_certificate(ssl_st*)':
      qsslsocket_openssl_symbols.cpp:(.text+0xc81): undefined reference to `SSL_get_peer_certificate'
      /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_EVP_PKEY_base_id(evp_pkey_st*)':
      qsslsocket_openssl_symbols.cpp:(.text+0xc91): undefined reference to `EVP_PKEY_base_id'
      collect2: error: ld returned 1 exit status
      make: *** [Makefile:601: ../../lib/libQt5Network.so.5.15.11] Error 1
      
      

      So first i validated the build log and this is what i see:

      Checking for OpenSSL... 
      Trying source 0 (type openssl) of library openssl ...
      $OPENSSL_LIBS is not set.
        => source produced no result.
      Trying source 1 (type inline) of library openssl ...
        => source failed condition 'config.win32'.
      Trying source 2 (type inline) of library openssl ...
        => source failed condition 'config.msvc'.
      Trying source 3 (type inline) of library openssl ...
        => source failed condition 'config.android'.
      Trying source 4 (type inline) of library openssl ...
      + cd /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl && /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" QMAKE_AR=x86_64-pc-linux-gnu-ar QMAKE_CC=x86_64-pc-linux-gnu-gcc QMAKE_LINK_C=x86_64-pc-linux-gnu-gcc QMAKE_LINK_C_SHLIB=x86_64-pc-linux-gnu-gcc QMAKE_CXX=x86_64-pc-linux-gnu-g++ QMAKE_LINK=x86_64-pc-linux-gnu-g++ QMAKE_LINK_SHLIB=x86_64-pc-linux-gnu-g++ QMAKE_OBJCOPY=x86_64-pc-linux-gnu-objcopy QMAKE_RANLIB= QMAKE_STRIP=x86_64-pc-linux-gnu-strip 'QMAKE_CFLAGS=-march=znver3 -O2 -pipe' QMAKE_CFLAGS_RELEASE= QMAKE_CFLAGS_DEBUG= 'QMAKE_CXXFLAGS=-march=znver3 -O2 -pipe' QMAKE_CXXFLAGS_RELEASE= QMAKE_CXXFLAGS_DEBUG= 'QMAKE_LFLAGS=-Wl,-O1 -Wl,--as-needed' QMAKE_LFLAGS_RELEASE= QMAKE_LFLAGS_DEBUG= 'QMAKE_USE += openssl' 'QMAKE_LIBS_OPENSSL = -lssl -lcrypto' /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl
      + cd /var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11_build/config.tests/openssl && MAKEFLAGS= /usr/bin/gmake
      > x86_64-pc-linux-gnu-g++ -c -march=znver3 -O2 -pipe -w -fPIC  -I. -I/var/tmp/portage/dev-qt/qtnetwork-5.15.11/work/qtbase-everywhere-src-5.15.11/mkspecs/linux-g++ -o main.o main.cpp
      > x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -o openssl main.o   -lssl -lcrypto   
       => source accepted.
      test config.qtbase_network.libraries.openssl succeeded
      
      

      so seems like openssl is found correctly. next, it was set to the linked option by cmake:

      Note: Option 'gssapi' with value 'no' was specified twice
      
      Note: Option 'libproxy' with value 'no' was specified twice
      
      Note: Overriding option 'openssl' with 'linked' (was: 'no')
      
      Note: When linking against OpenSSL, you can override the default
      library names through OPENSSL_LIBS.
      For example:
          OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked
      
      

      but next it was failed with the error above:

      x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wl,--no-undefined -Wl,--version-script,QtNetwork.version -Wl,--enable-new-dtags -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5Network.so.5 -o libQt5Network.so.5.15.11 .obj/qnetworkaccessauthenticationmanager.o .obj/qnetworkaccessmanager.o .obj/qnetworkaccesscache.o .obj/qnetworkaccessbackend.o .obj/qnetworkaccessdebugpipebackend.o .obj/qnetworkaccessfilebackend.o .obj/qnetworkaccesscachebackend.o .obj/qnetworkcookie.o .obj/qnetworkcookiejar.o .obj/qnetworkrequest.o .obj/qnetworkreply.o .obj/qnetworkreplyimpl.o .obj/qnetworkreplydataimpl.o .obj/qnetworkreplyfileimpl.o .obj/qabstractnetworkcache.o .obj/qnetworkfile.o .obj/qhsts.o .obj/qhstspolicy.o .obj/qftp.o .obj/qnetworkaccessftpbackend.o .obj/qnetworkdiskcache.o .obj/qhstsstore.o .obj/bitstreams.o .obj/huffman.o .obj/hpack.o .obj/hpacktable.o .obj/http2frames.o .obj/http2streams.o .obj/http2protocol.o .obj/qabstractprotocolhandler.o .obj/qhttp2protocolhandler.o .obj/qhttpmultipart.o .obj/qhttpnetworkconnection.o .obj/qhttpnetworkconnectionchannel.o .obj/qhttpnetworkheader.o .obj/qhttpnetworkreply.o .obj/qhttpnetworkrequest.o .obj/qhttpprotocolhandler.o .obj/qhttpthreaddelegate.o .obj/qnetworkreplyhttpimpl.o .obj/qhttp2configuration.o .obj/qspdyprotocolhandler.o .obj/qnetworksession.o .obj/qnetworkconfigmanager.o .obj/qnetworkconfiguration.o .obj/qnetworkconfigmanager_p.o .obj/qbearerengine.o .obj/qbearerplugin.o .obj/qsharednetworksession.o .obj/qauthenticator.o .obj/qhostaddress.o .obj/qhostinfo.o .obj/qnetworkdatagram.o .obj/qnetworkinterface.o .obj/qnetworkproxy.o .obj/qurlinfo.o .obj/qdnslookup.o .obj/qdnslookup_unix.o .obj/qhostinfo_unix.o .obj/qnetworkinterface_linux.o .obj/qnetconmonitor_stub.o .obj/qnetworkproxy_generic.o .obj/qabstractsocketengine.o .obj/qabstractsocket.o .obj/qtcpsocket.o .obj/qudpsocket.o .obj/qtcpserver.o .obj/qsocks5socketengine.o .obj/qhttpsocketengine.o .obj/qnativesocketengine.o .obj/qnativesocketengine_unix.o .obj/qlocalsocket.o .obj/qlocalserver.o .obj/qlocalsocket_unix.o .obj/qlocalserver_unix.o .obj/qasn1element.o .obj/qssl.o .obj/qsslcertificate.o .obj/qsslcertificateextension.o .obj/qsslconfiguration.o .obj/qsslcipher.o .obj/qssldiffiehellmanparameters.o .obj/qsslellipticcurve.o .obj/qsslkey_p.o .obj/qsslerror.o .obj/qsslsocket.o .obj/qsslpresharedkeyauthenticator.o .obj/qocspresponse.o .obj/qdtls.o .obj/qsslsocket_openssl_symbols.o .obj/qssldiffiehellmanparameters_openssl.o .obj/qsslcertificate_openssl.o .obj/qsslellipticcurve_openssl.o .obj/qsslkey_openssl.o .obj/qsslsocket_openssl.o .obj/qsslcontext_openssl.o .obj/qdtls_openssl.o .obj/qpassworddigestor.o .obj/moc_qnetworkaccesscache_p.o .obj/moc_qnetworkaccessbackend_p.o .obj/moc_qnetworkaccessdebugpipebackend_p.o .obj/moc_qnetworkaccessfilebackend_p.o .obj/moc_qnetworkcookiejar.o .obj/moc_qnetworkreply.o .obj/moc_qabstractnetworkcache.o .obj/moc_qnetworkfile_p.o .obj/moc_qnetworkaccessftpbackend_p.o .obj/moc_qnetworkdiskcache.o .obj/moc_qhttp2protocolhandler_p.o .obj/moc_qhttpmultipart.o .obj/moc_qhttpnetworkreply_p.o .obj/moc_qhttpthreaddelegate_p.o .obj/moc_qnetworkreplyhttpimpl_p.o .obj/moc_qspdyprotocolhandler_p.o .obj/moc_qnetworkconfigmanager_p.o .obj/moc_qnetworksession_p.o .obj/moc_qbearerplugin_p.o .obj/moc_qhostinfo_p.o .obj/moc_qnetconmonitor_p.o .obj/moc_qdnslookup_p.o .obj/moc_qabstractsocketengine_p.o .obj/moc_qtcpsocket.o .obj/moc_qudpsocket.o .obj/moc_qsocks5socketengine_p.o .obj/moc_qhttpsocketengine_p.o .obj/moc_qnativesocketengine_p.o .obj/moc_qdtls.o  /usr/lib64/libQt5Core.so -pthread -lz -lssl -lcrypto
      /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_SSL_get_peer_certificate(ssl_st*)':
      qsslsocket_openssl_symbols.cpp:(.text+0xc81): undefined reference to `SSL_get_peer_certificate'
      /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: .obj/qsslsocket_openssl_symbols.o: in function `q_EVP_PKEY_base_id(evp_pkey_st*)':
      qsslsocket_openssl_symbols.cpp:(.text+0xc91): undefined reference to `EVP_PKEY_base_id'
      collect2: error: ld returned 1 exit status
      
      

      so i checked the source file mentioned in the error message:

      // Here we have the ones that make difference between OpenSSL pre/post v3:
      #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
      X509 *q_SSL_get1_peer_certificate(SSL *a);
      #define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate
      int q_EVP_PKEY_get_base_id(const EVP_PKEY *pkey);
      #define q_EVP_PKEY_base_id q_EVP_PKEY_get_base_id
      #else
      X509 *q_SSL_get_peer_certificate(SSL *a);
      int q_EVP_PKEY_base_id(EVP_PKEY *a);
      #endif // OPENSSL_VERSION_MAJOR >= 3
      
      QT_END_NAMESPACE
      
      

      which leads to the question: did it correctly read the openssl version as seems like it takes the "else" clause instead of 'if'. but i have installed openssl ver 3:

      admin@gentoo ~ $ equery list openssl 
       * Searching for openssl ...
      [IP-] [  ] dev-libs/openssl-3.0.11:0/3
      

      with the following use flags:

       * Searching for openssl ...
      [IP-] [  ] dev-libs/openssl-3.0.11:0/3
      admin@gentoo ~ $ equery uses  openssl 
      [ Legend : U - final flag setting for installation]
      [        : I - package is installed with flag     ]
      [ Colors : set, unset                             ]
       * Found these USE flags for dev-libs/openssl-3.0.11:
       U I
       - - abi_x86_32       : 32-bit (x86) libraries
       + + asm              : Support assembly hand optimized crypto functions (i.e. faster run time)
       - - fips             : Enable FIPS provider
       - - ktls             : Enable support for Kernel implementation of TLS (kTLS)
       - - rfc3779          : Enable support for RFC 3779 (X.509 Extensions for IP Addresses and AS Identifiers)
       + + sctp             : Support for Stream Control Transmission Protocol
       + + static-libs      : Build static versions of dynamic libraries as well
       - - test             : Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
       - - tls-compression  : Enable support for discouraged TLS compression
       - - vanilla          : Do not add extra patches which change default behaviour; DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically
       - - verify-sig       : Verify upstream signatures on distfiles
       - - weak-ssl-ciphers : Build support for SSL/TLS ciphers that are considered "weak"
      
      

      i had recompiled that with static-lib just recently but by default this flag is disabled. this is current qtnetwork config :

       * Searching for qtnetwork ...
      [I--] [??] dev-qt/qtnetwork-5.15.10-r3:5/5.15
      [ Legend : U - final flag setting for installation]
      [        : I - package is installed with flag     ]
      [ Colors : set, unset                             ]
       * Found these USE flags for dev-qt/qtnetwork-5.15.11:
       U I
       - - debug    : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
       - - gssapi   : Enable support for GSSAPI (virtual/krb5)
       - - libproxy : Use net-libs/libproxy for automatic HTTP/SOCKS proxy configuration
       - - sctp     : Support for Stream Control Transmission Protocol
       + + ssl      : Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security)
       - - test     : Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
      

      also i compiled the latest version available in the gentoo repo (openssl-3.1.4) and tried to rebuild qtnetwork but got the same error. i tried some other options, but already do not remember all of them.

      so any ideas how to resolve this?

      C Offline
      C Offline
      ChrisW67
      wrote on last edited by
      #2

      @Alex-B Gentoo no longer exposes an OpenSSL 1.1 version in in its package library: upstream has gone EOL on that version 2023-09-11. It is still present but you would have to unmask it.

      A 1 Reply Last reply
      0
      • C ChrisW67

        @Alex-B Gentoo no longer exposes an OpenSSL 1.1 version in in its package library: upstream has gone EOL on that version 2023-09-11. It is still present but you would have to unmask it.

        A Offline
        A Offline
        Alex B
        wrote on last edited by
        #3

        @ChrisW67 that i tried already, but it did not work. There are already qt* packages in the tree that require openssl-3.0+ and prev versions (compatible with openssl-1.1.1) are not available anymore.. Plus, i have another server with most identical config and just tried to rebuild openssl-3.0.11 on that box and it compiled fine without masking/unmasking anything. Another thing - that server does not have installed certain packages I have installed here - such as qtcreator/qtdesigner for example. Can it be related somehow to misconfig etc?

        A 1 Reply Last reply
        0
        • A Alex B

          @ChrisW67 that i tried already, but it did not work. There are already qt* packages in the tree that require openssl-3.0+ and prev versions (compatible with openssl-1.1.1) are not available anymore.. Plus, i have another server with most identical config and just tried to rebuild openssl-3.0.11 on that box and it compiled fine without masking/unmasking anything. Another thing - that server does not have installed certain packages I have installed here - such as qtcreator/qtdesigner for example. Can it be related somehow to misconfig etc?

          A Offline
          A Offline
          Alex B
          wrote on last edited by
          #4

          ok issue was resolved in https://forums.gentoo.org/viewtopic-p-8807781.html#8807781

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved