Building and linking Qt5.6.2 static windows with openssl and mingw4.9.2 ?
-
Hi,
for internals purposes we need to build Qt static with mingw.before we used 5.3.2 but now we use 5.6.2 and we have problems with openssl and QtNetwork with 5.6.2 static.
the tools xmlpatterns doesn't build and if I use the libs of qtbase to build our project we have undefined reference with libQt5Network and openssl (we build Qt with openssl_linked and with the right "OPENSSL_LIBS=...") :g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -o ....\bin\xmlpatterns.exe .obj/release/main.o .obj/release/qapplicationargument.o .obj/release/qapplicationargum
entparser.o .obj/release/xmlpatterns_plugin_import.o -LC:\Qt\Qt5.6.2\5.6\Src\qtxmlpatterns\lib C:\Qt\Qt5.6.2\5.6\Src\qtxmlpatterns\lib\libQt5XmlPatterns.a -LC:\Qt\Qt5
.6.2\5.6\Src\qtbase\lib -Lc:\openssl\lib -LC:\Qt\Qt5.6.2\5.6\Src\qtbase\plugins\bearer C:\Qt\Qt5.6.2\5.6\Src\qtbase\plugins\bearer\libqgenericbearer.a C:\Qt\Qt5.6.2\5.
6\Src\qtbase\plugins\bearer\libqnativewifibearer.a C:\Qt\Qt5.6.2\5.6\Src\qtbase\lib\libQt5Network.a -ldnsapi -liphlpapi -lcrypto -lssl -lgdi32 -lUser32 -lcrypt32 C:\Qt
\Qt5.6.2\5.6\Src\qtbase\lib\libQt5Core.a -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmpr C:\Qt\Qt5.6.2\5.6\Src\qtbase\lib\libqtpcre.a
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1e6): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x202): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xaba): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xbb5): undefined reference to
BIO_s_socket'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xd25): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x14f0): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x150c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1610): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x162c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x357a): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x3596): more undefined references toCOMP_CTX_free' follow c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e6c): undefined reference to
X509_STORE_set_default_paths'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e7c): undefined reference toX509_STORE_load_locations' C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: c:\openssl\lib/libssl.a(ssl_lib.o): bad reloc address 0x 80 in section
.data'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:64: recipe for target '....\bin\xmlpatternsvalidator.exe' failed
mingw32-make[4]: *** [....\bin\xmlpatternsvalidator.exe] Error 1
mingw32-make[4]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatternsvalidator'
Makefile:34: recipe for target 'release' failed
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatternsvalidator'
Makefile:64: recipe for target 'sub-xmlpatternsvalidator-make_first' failed
mingw32-make[2]: *** [sub-xmlpatternsvalidator-make_first] Error 2
mingw32-make[2]: *** Waiting for unfinished jobs....
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1e6): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x202): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xaba): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xbb5): undefined reference to
BIO_s_socket'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xd25): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x14f0): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x150c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1610): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x162c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x357a): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x3596): more undefined references toCOMP_CTX_free' follow c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e6c): undefined reference to
X509_STORE_set_default_paths'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e7c): undefined reference toX509_STORE_load_locations' C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: c:\openssl\lib/libssl.a(ssl_lib.o): bad reloc address 0x 80 in section
.data'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:72: recipe for target '....\bin\xmlpatterns.exe' failed
mingw32-make[4]: *** [....\bin\xmlpatterns.exe] Error 1
mingw32-make[4]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatterns'
Makefile:34: recipe for target 'release' failed
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatterns'
Makefile:39: recipe for target 'sub-xmlpatterns-make_first' failed
mingw32-make[2]: *** [sub-xmlpatterns-make_first] Error 2
mingw32-make[2]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools'
Makefile:66: recipe for target 'sub-tools-make_first' failed
mingw32-make[1]: *** [sub-tools-make_first] Error 2
mingw32-make[1]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns'
makefile:264: recipe for target 'module-qtxmlpatterns-make_first' failed
mingw32-make: *** [module-qtxmlpatterns-make_first] Error 2c:\Qt\Qt5.6.2\5.6\Src>configure.bat -static -release -platform win32-g++ -prefix "C:\Qt\Qt5.6.2_static_kk" -qt-sql-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -openssl-linked -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests OPENSSL_LIBS="-lcrypto -lssl -lgdi32 -lUser32" -L c:\openssl\lib -I c:\openssl\include -skip qtwebengine -skip qtwebview -skip qt3d
-
Hi,
for internals purposes we need to build Qt static with mingw.before we used 5.3.2 but now we use 5.6.2 and we have problems with openssl and QtNetwork with 5.6.2 static.
the tools xmlpatterns doesn't build and if I use the libs of qtbase to build our project we have undefined reference with libQt5Network and openssl (we build Qt with openssl_linked and with the right "OPENSSL_LIBS=...") :g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -o ....\bin\xmlpatterns.exe .obj/release/main.o .obj/release/qapplicationargument.o .obj/release/qapplicationargum
entparser.o .obj/release/xmlpatterns_plugin_import.o -LC:\Qt\Qt5.6.2\5.6\Src\qtxmlpatterns\lib C:\Qt\Qt5.6.2\5.6\Src\qtxmlpatterns\lib\libQt5XmlPatterns.a -LC:\Qt\Qt5
.6.2\5.6\Src\qtbase\lib -Lc:\openssl\lib -LC:\Qt\Qt5.6.2\5.6\Src\qtbase\plugins\bearer C:\Qt\Qt5.6.2\5.6\Src\qtbase\plugins\bearer\libqgenericbearer.a C:\Qt\Qt5.6.2\5.
6\Src\qtbase\plugins\bearer\libqnativewifibearer.a C:\Qt\Qt5.6.2\5.6\Src\qtbase\lib\libQt5Network.a -ldnsapi -liphlpapi -lcrypto -lssl -lgdi32 -lUser32 -lcrypt32 C:\Qt
\Qt5.6.2\5.6\Src\qtbase\lib\libQt5Core.a -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmpr C:\Qt\Qt5.6.2\5.6\Src\qtbase\lib\libqtpcre.a
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1e6): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x202): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xaba): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xbb5): undefined reference to
BIO_s_socket'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xd25): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x14f0): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x150c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1610): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x162c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x357a): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x3596): more undefined references toCOMP_CTX_free' follow c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e6c): undefined reference to
X509_STORE_set_default_paths'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e7c): undefined reference toX509_STORE_load_locations' C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: c:\openssl\lib/libssl.a(ssl_lib.o): bad reloc address 0x 80 in section
.data'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:64: recipe for target '....\bin\xmlpatternsvalidator.exe' failed
mingw32-make[4]: *** [....\bin\xmlpatternsvalidator.exe] Error 1
mingw32-make[4]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatternsvalidator'
Makefile:34: recipe for target 'release' failed
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatternsvalidator'
Makefile:64: recipe for target 'sub-xmlpatternsvalidator-make_first' failed
mingw32-make[2]: *** [sub-xmlpatternsvalidator-make_first] Error 2
mingw32-make[2]: *** Waiting for unfinished jobs....
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1e6): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x202): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xaba): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xbb5): undefined reference to
BIO_s_socket'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0xd25): undefined reference toBIO_s_socket' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x14f0): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x150c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x1610): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x162c): undefined reference toCOMP_CTX_free' c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x357a): undefined reference to
COMP_CTX_free'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x3596): more undefined references toCOMP_CTX_free' follow c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e6c): undefined reference to
X509_STORE_set_default_paths'
c:\openssl\lib/libssl.a(ssl_lib.o):ssl_lib.c:(.text+0x5e7c): undefined reference toX509_STORE_load_locations' C:/Qt/Qt5.6.2/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: c:\openssl\lib/libssl.a(ssl_lib.o): bad reloc address 0x 80 in section
.data'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:72: recipe for target '....\bin\xmlpatterns.exe' failed
mingw32-make[4]: *** [....\bin\xmlpatterns.exe] Error 1
mingw32-make[4]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatterns'
Makefile:34: recipe for target 'release' failed
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools/xmlpatterns'
Makefile:39: recipe for target 'sub-xmlpatterns-make_first' failed
mingw32-make[2]: *** [sub-xmlpatterns-make_first] Error 2
mingw32-make[2]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns/tools'
Makefile:66: recipe for target 'sub-tools-make_first' failed
mingw32-make[1]: *** [sub-tools-make_first] Error 2
mingw32-make[1]: Leaving directory 'c:/Qt/Qt5.6.2/5.6/Src/qtxmlpatterns'
makefile:264: recipe for target 'module-qtxmlpatterns-make_first' failed
mingw32-make: *** [module-qtxmlpatterns-make_first] Error 2c:\Qt\Qt5.6.2\5.6\Src>configure.bat -static -release -platform win32-g++ -prefix "C:\Qt\Qt5.6.2_static_kk" -qt-sql-sqlite -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -openssl-linked -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests OPENSSL_LIBS="-lcrypto -lssl -lgdi32 -lUser32" -L c:\openssl\lib -I c:\openssl\include -skip qtwebengine -skip qtwebview -skip qt3d
And I want to say that we haven't any problems with the dynamic version (because we distribute with Qt dynamic) but the static version of Qt5.6.2 with openssl has this problem
-
Hi,
Are your OpenSSL libraries also built with the same compiler you are using to build Qt ?
-
Hi,
Are your OpenSSL libraries also built with the same compiler you are using to build Qt ?
@SGaist Yes with the mingw4.9.2 (32 bits) of Qt5.6.2.
But the path of perl was not available during the build. is it the reason why it failed ?
I will try again with the path of perl in the environment variable path.... -
@SGaist Yes with the mingw4.9.2 (32 bits) of Qt5.6.2.
But the path of perl was not available during the build. is it the reason why it failed ?
I will try again with the path of perl in the environment variable path....@SGaist,ok it is stupid I have inverted the order : I have putted -lcrypto -lssl instead of -lssl -lcrypto.I should have put -lssl -lcrypto....the problem the compilation of Qt is already fast finished.I Hope I could invert in the makefile of my project......
-
Right, the order is important when building something with static libs.
-
@SGaist I could build a version (with -lssl -lcrypto) so my problem is solved.