Details
-
Bug
-
Resolution: Fixed
-
P3: Somewhat important
-
6.5.1, 6.5.2, 6.6.1
-
None
-
MingW64
-
-
230c53ad9 (dev), 49283c156 (6.6), efa74aff8 (6.5), 938bdccb8 (dev), 63395dda3 (6.7)
Description
Host computer: Ubuntu 20.04
add-apt-repository ppa:rncbc/qt6.5-static-focal add-apt-repository ppa:cybermax-dexter/mingw-w64-backport apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 qtbase6-static update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
Using cross-compiled, static Qt 6.5.1:
(note - openssl 3.0.9 cross-compiled as well and installed correctly to /tmp/openssl-3.0.9):
./configure -prefix /tmp/qt -no-feature-sql-odbc -sql-sqlite -platform linux-g++-64 -qt-host-path /opt/qt6.5-static -xplatform win32-g++ -device-option CROSS_COMPILE=x86_64-w64-mingw32- -release -opengl desktop -mp -static -static-runtime -no-shared -nomake examples -no-icu -optimize-size -openssl-linked -- -DOPENSSL_ROOT_DIR=/tmp/openssl-3.0.9 -DCMAKE_TOOLCHAIN_FILE=/tmp/profile.cmake
Also, /tmp/profile.cmake:
set(CMAKE_SYSTEM_NAME Windows) set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran) set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /) set(CMAKE_C_FLAGS_RELEASE "-m64 -Os") set(CMAKE_CXX_FLAGS_RELEASE "-m64 -Os")
When I try to cross-compile a Qt application, I receive the following linker errors (using https://www.github.com/squinky86/STIGQter as the example here):
x86_64-w64-mingw32-g++ -Wl,-s -static -Wl,-subsystem,windows -mthreads -o release/STIGQter.exe release/asset.o release/assetview.o release/cci.o release/cklcheck.o release/common.o release/control.o release/dbmanager.o release/family.o release/help.o release/main.o release/stig.o release/stigcheck.o release/stigedit.o release/stigqter.o release/supplement.o release/tabviewwidget.o release/worker.o release/workerassetadd.o release/workerassetdelete.o release/workercciadd.o release/workerccidelete.o release/workercheckversion.o release/workerckl.o release/workercklexport.o release/workercklimport.o release/workercklupgrade.o release/workercmrsexport.o release/workeremassreport.o release/workerfindingsreport.o release/workerhtml.o release/workerimportemass.o release/workerimportemasscontrol.o release/workermapunmapped.o release/workerpoamreport.o release/workerstigadd.o release/workerstigdelete.o release/workerstigdownload.o release/stigqter_plugin_import.o release/qrc_qmake_resources.o release/moc_asset.o release/moc_assetview.o release/moc_cci.o release/moc_cklcheck.o release/moc_control.o release/moc_family.o release/moc_help.o release/moc_stig.o release/moc_stigcheck.o release/moc_stigedit.o release/moc_stigqter.o release/moc_supplement.o release/moc_tabviewwidget.o release/moc_worker.o release/moc_workerassetadd.o release/moc_workerassetdelete.o release/moc_workercciadd.o release/moc_workerccidelete.o release/moc_workercheckversion.o release/moc_workerckl.o release/moc_workercklexport.o release/moc_workercklimport.o release/moc_workercklupgrade.o release/moc_workercmrsexport.o release/moc_workeremassreport.o release/moc_workerfindingsreport.o release/moc_workerhtml.o release/moc_workerimportemass.o release/moc_workerimportemasscontrol.o release/moc_workermapunmapped.o release/moc_workerpoamreport.o release/moc_workerstigadd.o release/moc_workerstigdelete.o release/moc_workerstigdownload.o /tmp/libzip-1.9.2/lib/libzip.a /tmp/libxlsxwriter-RELEASE_1.1.5/libxlsxwriter.a /tmp/zlib-ng-2.0.7/libz.a /tmp/qt/plugins/styles/libqwindowsvistastyle.a -L/tmp/openssl-3.0.9 /tmp/qt/lib/objects-Release/QWindowsIntegrationPlugin_resources_1/.rcc/qrc_openglblacklists.cpp.obj /tmp/qt/lib/objects-Release/QWindowsIntegrationPlugin_resources_2/.rcc/qrc_cursors.cpp.obj /tmp/qt/plugins/platforms/libqwindows.a -limm32 -loleaut32 -lshlwapi -lwinspool -lwtsapi32 -lshcore -lcomdlg32 -ld3d9 -lruntimeobject /tmp/qt/lib/libQt6OpenGL.a -lopengl32 /tmp/qt/plugins/imageformats/libqgif.a /tmp/qt/plugins/imageformats/libqico.a /tmp/qt/plugins/imageformats/libqjpeg.a /tmp/qt/lib/libQt6BundledLibjpeg.a /tmp/qt/plugins/networkinformation/libqnetworklistmanager.a /tmp/qt/plugins/tls/libqopensslbackend.a /tmp/qt/plugins/tls/libqschannelbackend.a -lbcrypt -lncrypt /tmp/qt/plugins/sqldrivers/libqsqlite.a /tmp/qt/lib/objects-Release/Widgets_resources_1/.rcc/qrc_qstyle.cpp.obj /tmp/qt/lib/objects-Release/Widgets_resources_2/.rcc/qrc_qstyle1.cpp.obj /tmp/qt/lib/objects-Release/Widgets_resources_3/.rcc/qrc_qmessagebox.cpp.obj /tmp/qt/lib/libQt6Widgets.a -ldwmapi -luxtheme /tmp/qt/lib/objects-Release/Gui_resources_1/.rcc/qrc_qpdf.cpp.obj /tmp/qt/lib/objects-Release/Gui_resources_2/.rcc/qrc_gui_shaders.cpp.obj /tmp/qt/lib/libQt6Gui.a -ld3d11 -ldxgi -ldxguid -ldcomp -lgdi32 /tmp/qt/lib/libQt6BundledHarfbuzz.a /tmp/qt/lib/libQt6BundledFreetype.a /tmp/qt/lib/libQt6BundledLibpng.a -ld2d1 -ldwrite /tmp/qt/lib/libQt6Network.a -ldnsapi -liphlpapi -lsecur32 -lwinhttp /tmp/qt/lib/libQt6Sql.a /tmp/qt/lib/libQt6Xml.a /tmp/qt/lib/libQt6Core.a /tmp/qt/lib/libQt6BundledZLIB.a -lsynchronization -lmpr -luserenv -ladvapi32 -lauthz -lkernel32 -lnetapi32 -lole32 -lshell32 -luser32 -luuid -lversion -lwinmm /tmp/qt/lib/libQt6BundledPcre2.a -lssl -lcrypto -lws2_32 -lcrypt32 release/STIGQter_res.o -lmingw32 /tmp/qt/lib/libQt6EntryPoint.a -lshell32 /usr/bin/x86_64-w64-mingw32-ld: /tmp/qt/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x10f): undefined reference to `__imp_VariantInit' /usr/bin/x86_64-w64-mingw32-ld: /tmp/qt/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x149): undefined reference to `__imp_VariantClear' /usr/bin/x86_64-w64-mingw32-ld: /tmp/qt/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x192): undefined reference to `__imp_VariantClear' /usr/bin/x86_64-w64-mingw32-ld: /tmp/qt/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x1ab): undefined reference to `__imp_VariantClear' collect2: error: ld returned 1 exit status
It looks like -lole32 and -loleaut32 are both added to the compilation line, which I thought is what provided these undefined references. This worked fine on all 6.4 versions. I never did try 6.5.0. The test case I'm using for this is Appveyor (https://github.com/squinky86/STIGQter/blob/master/appveyor.yml).
Attachments
Issue Links
- is duplicated by
-
QTBUG-119548 Linking Qt Network in MinGW static build leads to undefined references from qnetworklistmanagerevents.cpp in qmake projects
- Closed
-
QTBUG-124591 Cannot link Qt Network in static mingw builds
- Closed
- relates to
-
QTBUG-124591 Cannot link Qt Network in static mingw builds
- Closed