Help me to understand, why simple qt application with dynamically loading libraries run under gdb, but more complex is not. Qt Toolkit I use the for both.
This is how my test application builds (lib and exe afterwards):
C:/devtools/mingw-i686-4.8.2-release-posix-dwarf-rt_v3-rev3/mingw32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Users/juriy/testlib'
g++ -c -pipe -Wall -Wextra -Werror -g -fprofile-arcs -ftest-coverage -O0 -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DTESTLIB_LIBRARY -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../../Qt/4.8.6/include/QtCore' -I'../../../Qt/4.8.6/include/QtGui' -I'../../../Qt/4.8.6/include' -I'../../../Qt/4.8.6/include/ActiveQt' -I'debug' -I'../../../Qt/4.8.6/mkspecs/win32-g++' -o debug/testlib.o testlib.cpp
g++ -export-dynamic -lgcov -coverage -mthreads -shared -Wl,--out-implib,debug/libtestlib.a -o debug/testlib.dll debug/testlib.o -L'c:/Qt/4.8.6/lib' -lQtGuid4 -lQtCored4
C:/devtools/mingw-i686-4.8.2-release-posix-dwarf-rt_v3-rev3/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols?
mingw32-make[1]: Leaving directory 'C:/Users/juriy/testlib'
g++ -c -pipe -Wall -Wextra -Werror -g -fprofile-arcs -ftest-coverage -O0 -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../../Qt/4.8.6/include/QtCore' -I'../../../Qt/4.8.6/include/QtGui' -I'../../../Qt/4.8.6/include' -I'../testlib' -I'../../../Qt/4.8.6/include/ActiveQt' -I'debug' -I'.' -I'../../../Qt/4.8.6/mkspecs/win32-g++' -o debug/widget.o widget.cpp
g++ -c -pipe -Wall -Wextra -Werror -g -fprofile-arcs -ftest-coverage -O0 -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../../Qt/4.8.6/include/QtCore' -I'../../../Qt/4.8.6/include/QtGui' -I'../../../Qt/4.8.6/include' -I'../testlib' -I'../../../Qt/4.8.6/include/ActiveQt' -I'debug' -I'.' -I'../../../Qt/4.8.6/mkspecs/win32-g++' -o debug/moc_widget.o debug/moc_widget.cpp
g++ -export-dynamic -lgcov -coverage -mthreads -Wl,-subsystem,windows -o debug/test.exe debug/main.o debug/widget.o debug/moc_widget.o -L'c:/Qt/4.8.6/lib' -lmingw32 -lqtmaind -ltestlib -L../testlib/debug -lQtGuid4 -lQtCored4
C:/devtools/mingw-i686-4.8.2-release-posix-dwarf-rt_v3-rev3/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols?
mingw32-make[1]: Leaving directory 'C:/Users/juriy/test'
And my complex application building:
g++ -c -pipe -Wall -Wextra -Werror -g -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DSIP_LIB -DQWT_DLL -DQT_DLL -DQT_WEBKIT_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I'../../../../Qt/4.8.6/include/QtCore' -I'../../../../Qt/4.8.6/include/QtNetwork' -I'../../../../Qt/4.8.6/include/QtGui' -I'../../../../Qt/4.8.6/include/QtXml' -I'../../../../Qt/4.8.6/include/QtXmlPatterns' -I'../../../../Qt/4.8.6/include/QtSql' -I'../../../../Qt/4.8.6/include/QtSvg' -I'../../../../Qt/4.8.6/include/QtWebKit' -I'../../../../Qt/4.8.6/include' -I'.' -I'../SIP_Common' -I'../SIP_Qwt' -I'../SIP_Qwt/src' -I'../../../../Qt/4.8.6/include/ActiveQt' -I'debug/mocs' -I'debug/uics' -I'../../../../Qt/4.8.6/mkspecs/win32-g++' -o debug/objs/moc_sbmrscwidget.o debug/mocs/moc_sbmrscwidget.cpp
g++ -export-dynamic -mthreads -shared -Wl,--out-implib,./debug/libWidgets.a -o debug/Widgets.dll object_script.Widgets.Debug -L'c:/Qt/4.8.6/lib' -lCommon -L../SIP_Common/debug -lQwt_4 -L../SIP_Qwt/debug -lQtWebKitd4 -lQtSvgd4 -lQtSqld4 -lQtXmlPatternsd4 -lQtXmld4 -lQtGuid4 -lQtNetworkd4 -lQtCored4
C:/devtools/mingw-i686-4.8.2-release-posix-dwarf-rt_v3-rev3/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: warning: --export-dynamic is not supported for PE targets, did you mean --export-all-symbols?
Tha last illustrates both library and exe building flags, flags the same.
When gdb starts I see in QtCreator gdb output concrete differencies. For simple app gdb starts to load libs like so:
>=library-loaded,id="C:\\Windows\\system32\\ntdll.dll",target-name="C:\\Windows\\system32\\ntdll.dll",host-name="C:\\Windows\\system32\\ntdll.dll",symbols-loaded="0",thread-group="i1"
sLibrary C:\Windows\system32\ntdll.dll loaded
>=library-loaded,id="C:\\Windows\\syswow64\\kernel32.dll",target-name="C:\\Windows\\syswow64\\kernel32.dll",host-name="C:\\Windows\\syswow64\\kernel32.dll",symbols-loaded="0",thread-group="i1"
sLibrary C:\Windows\syswow64\kernel32.dll loaded
>=library-loaded,id="C:\\Windows\\syswow64\\KernelBase.dll",target-name="C:\\Windows\\syswow64\\KernelBase.dll",host-name="C:\\Windows\\syswow64\\KernelBase.dll",symbols-loaded="0",thread-group="i1"
sLibrary C:\Windows\syswow64\KernelBase.dll loaded
>=library-loaded,id="C:\\Users\\juriy\\testlib\\debug\\testlib.dll",target-name="C:\\Users\\juriy\\testlib\\debug\\testlib.dll",host-name="C:\\Users\\juriy\\testlib\\debug\\testlib.dll",symbols-loaded="0",thread-group="i1"
sLibrary C:\Users\juriy\testlib\debug\testlib.dll loaded
But when more complex one starts up, gdb omits the loading and outputs following instead:
>=thread-exited,id="1",group-id="i1"
sThread 1 in group i1 exited
>=thread-group-exited,id="i1"
sThread group i1 exited
>19^error,msg="During startup program exited with code 0xc0000022."
dCOOKIE FOR TOKEN 19 ALREADY EATEN (InferiorRunOk). TWO RESPONSES FOR ONE COMMAND?
dNOTE: INFERIOR EXITED
dState changed from InferiorRunOk(11) to InferiorExitOk(16) [master]
dState changed from InferiorExitOk(16) to InferiorShutdownOk(19) [master]
dState changed from InferiorShutdownOk(19) to EngineShutdownRequested(20) [master]
dQUEUE: SHUTDOWN ENGINE
sExecutable failed: During startup program exited with code 0xc0000022.
PS. There is some warnings about CROSS_COMPILE, should I ignore this?
Here some same question, but it a bit useless because of I couldn't see the decision.
Related
I wanted to install the python module sip (version 4.17) according to the documentation on my Windows 7 machine:
Download from the official page as described in the documentation
Unzip the repository to the folder C:\Python27\Lib\site-packages\sip-4.17
Configure the package with the command python.exe configure.py in this folder
Building the module mingw32-make fails.
Mingw's make returns the following error message:
mingw32-make[1]: Entering directory 'C:/Python27/Lib/site-packages/sip-4.17/sipgen'
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o main.o main.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o transform.o transform.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o gencode.o gencode.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o extracts.o extracts.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o export.o export.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o heap.o heap.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o parser.o parser.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -o lexer.o lexer.c
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -Wl,-s -o sip.exe main.o transform.o gencode.o extracts.o export.o heap.o parser.o lexer.o
mingw32-make[1]: Leaving directory 'C:/Python27/Lib/site-packages/sip-4.17/sipgen'
mingw32-make[1]: Entering directory 'C:/Python27/Lib/site-packages/sip-4.17/siplib'
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o siplib.o siplib.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o apiversions.o apiversions.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o descriptors.o descriptors.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o qtlib.o qtlib.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o threads.o threads.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o objmap.o objmap.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o voidptr.o voidptr.c
gcc -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o array.o array.c
g++ -c -O2 -w -DNDEBUG -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -IC:\Python27\include -o bool.o bool.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -shared -Wl,-subsystem,console -Wl,-s -o sip.pyd siplib.o apiversions.o descriptors.o qtlib.o threads.o objmap.o voidptr.o array.o bool.o -LC:\Python27\libs -lpython27
C:\Python27\libs/libpython27.a: error adding symbols: File format not recognized
collect2.exe: error: ld returned 1 exit status
Makefile:36: recipe for target 'sip.pyd' failed
mingw32-make[1]: *** [sip.pyd] Error 1
mingw32-make[1]: Leaving directory 'C:/Python27/Lib/site-packages/sip-4.17/siplib'
Makefile:3: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
I have no clue why it failed to compile the code saying File format not recognized. Is it the same mistake as in g++ output: file not recognized: File format not recognized?
Thank you for your help in advance!
Comment:
I followed the following questions too but I want to install it using the zip file - so I know what is installed.
Can't configure pyQt
How to install SIP & PyQT on windows 7
How did you configure SIP? You need to choose a configuration option (see documentation in the docs file of the SIP archive). I got this to work once I chose --platform win32-g++.
I have Qt-Creator on OpenSUSE. In it a have a C++ project with compiler 'clang'. There I have this '.pro' configuration:
INCLUDEPATH += "/✪Data_Disk⚜✼/Build/include/c++/v1/"
LIBS += "-stdlib=libc++"
LIBS += "/✪Data_Disk⚜✼/Build/lib/libc++abi.a"
QMAKE_CXXFLAGS += -std=c++14 -stdlib=libc++
TARGET = testCpp
SOURCES += main.cpp
And when I compile I got this output:
clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/unsupported/linux-clang -I../testCpp -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I/✪Data_Disk⚜✼/Build/include/c++/v1 -I. -I../testCpp -I. -o main.o ../testCpp/main.cpp
I want it to be either:
clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/✪Data_Disk⚜✼/Build/include/c++/v1 -I/usr/share/qt4/mkspecs/unsupported/linux-clang -I../testCpp -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I../testCpp -I. -o main.o ../testCpp/main.cpp
Or:
clang++ -c -pipe -Qunused-arguments -std=c++14 -stdlib=libc++ -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/✪Data_Disk⚜✼/Build/include/c++/v1 -o main.o ../testCpp/main.cpp
In other words - I want to either include this path (
-I/✪Data_Disk⚜✼/Build/include/c++/v1
) before the system defined ones or to completely remove them and leave only it. Any ideas?
If you look into qmake source, for example Win32MakefileGenerator::writeStandardParts() or UnixMakefileGenerator::writeMakeParts() you will see that the flags are included in the following order:
QMAKE_CC
QMAKE_CXX
QMAKE_CFLAGS
QMAKE_CXXFLAGS
INCLUDEPATH
...
INCLUDEPATH always goes after the first four. You can use QMAKE_CXXFLAGS and add -I path there:
QMAKE_CXXFLAGS += -I/✪Data_Disk⚜✼/Build/include/c++/v1
I'm trying to build a Qt5 application on Windows, but I was not able to compile and link it correctly.
There aren't any "direct" compiler or linker errors, but when I run it Windows says that Qt5Core.dll is missing.
Beforehand I compiled statically Qt5 using
configure -static
mingw32-make
And everything went fine.
Here is my project file (qmake):
TEMPLATE = app
QT += network widgets # core gui included by default
CONFIG += static c++11
DEFINES += VERSION=\\\"1.0\\\"
win32 {
INCLUDEPATH += $$PWD/../../include
LIBS += -L$$PWD/../../include/ -lluacppinterface -llua
}
SOURCES += main.cpp\
Client.cpp\
Updater.cpp\
Header.cpp
HEADERS += Client.h\
Updater.h\
Header.h\
Compiler output from Qt Creator:
20:06:22: Running steps for project FireClient_qmake...
20:06:22: Starting: "C:\Qt\Tools\mingw491_32\bin\mingw32-make.exe" clean
C:/Qt/Tools/mingw491_32/bin/mingw32-make -f Makefile.Release clean
mingw32-make[1]: Entering directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
del release\moc_Client.cpp release\moc_Updater.cpp
del release\main.o release\Client.o release\Updater.o release\Header.o release\moc_Client.o release\moc_Updater.o
mingw32-make[1]: Leaving directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
C:/Qt/Tools/mingw491_32/bin/mingw32-make -f Makefile.Debug clean
mingw32-make[1]: Entering directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
del debug\moc_Client.cpp debug\moc_Updater.cpp
Impossibile trovare C:\Users\User1\Qt_projs\build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release\debug\moc_Client.cpp
del debug\main.o debug\Client.o debug\Updater.o debug\Header.o debug\moc_Client.o debug\moc_Updater.o
Impossibile trovare C:\Users\User1\Qt_projs\build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release\debug\main.o
mingw32-make[1]: Leaving directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
20:06:22: The process "C:\Qt\Tools\mingw491_32\bin\mingw32-make.exe" exited normally.
20:06:22: Configuration unchanged, skipping qmake step.
20:06:22: Starting: "C:\Qt\Tools\mingw491_32\bin\mingw32-make.exe" -j9
C:/Qt/Tools/mingw491_32/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\main.o ..\FireClient_qmake\main.cpp
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\Client.o ..\FireClient_qmake\Client.cpp
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\Updater.o ..\FireClient_qmake\Updater.cpp
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\Header.o ..\FireClient_qmake\Header.cpp
C:\Qt\5.4\mingw491_32\bin\moc.exe -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -D__GNUC__ -DWIN32 -IC:/Qt/5.4/mingw491_32/mkspecs/win32-g++ -IC:/Users/User1/Qt_projs/FireClient_qmake -IC:/Users/User1/include -IC:/Qt/5.4/mingw491_32/include -IC:/Qt/5.4/mingw491_32/include/QtWidgets -IC:/Qt/5.4/mingw491_32/include/QtGui -IC:/Qt/5.4/mingw491_32/include/QtNetwork -IC:/Qt/5.4/mingw491_32/include/QtCore -I. ..\FireClient_qmake\Client.h -o release\moc_Client.cpp
C:\Qt\5.4\mingw491_32\bin\moc.exe -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -D__GNUC__ -DWIN32 -IC:/Qt/5.4/mingw491_32/mkspecs/win32-g++ -IC:/Users/User1/Qt_projs/FireClient_qmake -IC:/Users/User1/include -IC:/Qt/5.4/mingw491_32/include -IC:/Qt/5.4/mingw491_32/include/QtWidgets -IC:/Qt/5.4/mingw491_32/include/QtGui -IC:/Qt/5.4/mingw491_32/include/QtNetwork -IC:/Qt/5.4/mingw491_32/include/QtCore -I. ..\FireClient_qmake\Updater.h -o release\moc_Updater.cpp
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\moc_Updater.o release\moc_Updater.cpp
g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DVERSION=\"1.0\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\FireClient_qmake -I"..\..\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtWidgets" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtGui" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtNetwork" -I"..\..\..\..\Qt\5.4\mingw491_32\include\QtCore" -I"release" -I"." -I"..\..\..\..\Qt\5.4\mingw491_32\mkspecs\win32-g++" -o release\moc_Client.o release\moc_Client.cpp
g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\FireClient_qmake.exe release/main.o release/Client.o release/Updater.o release/Header.o release/moc_Client.o release/moc_Updater.o -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -LC:/Qt/5.4/mingw491_32/lib -lqtmain -LC:\mingw491\mingw32\lib -LC:\Utils\icu32_53_1_mingw482\lib -LC:\utils\postgresql\pgsql\lib -LC:\utils\mysql\mysql\lib -LC:\opensll\lib -lshell32 -LC:\Qt\5.4\mingw491_32/lib -LC:/Users/User1/Qt_projs/FireClient_qmake/../../include/ -lluacppinterface -llua -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core
mingw32-make[1]: Leaving directory 'C:/Users/User1/Qt_projs/build-FireClient_qmake-Desktop_Qt_5_4_0_MinGW_32bit-Release'
20:06:30: The process "C:\Qt\Tools\mingw491_32\bin\mingw32-make.exe" exited normally.
20:06:30: Elapsed time: 00:08.
However, both Windows and the Dependency Walker say that my application depends on Qt5Core.dll and other dynamic Qt libraries. Why doesn't qmake link Qt static libraries instead?
Solved, Qt creator's kit was pointing to the dynamic version of this qmake.
I'm having a problem when I try building an application with QTCreater.
This is the error I get:
QT Compile Output:
12:40:01: Running steps for project untitled2...
12:40:01: Starting: "C:\Qt\4.8.5\bin\qmake.exe" C:\Users\user\Desktop\untitled2\untitled2.pro -r -spec win32-g++ "CONFIG+=declarative_debug"
12:40:01: The process "C:\Qt\4.8.5\bin\qmake.exe" exited normally.
12:40:01: Starting: "C:\MinGW-back\bin\mingw32-make.exe"
C:/MinGW-back/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/user/Desktop/build-untitled2-Unnamed-Debug'
c:\Qt\4.8.5\bin\uic.exe ..\untitled2\mainwindow.ui -o ui_mainwindow.h
g++ -c -pipe -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.8.5\include\QtCore" -I"..\..\..\..\Qt\4.8.5\include\QtGui" -I"..\..\..\..\Qt\4.8.5\include" -I"..\..\..\..\Qt\4.8.5\include\ActiveQt" -I"debug" -I"." -I"..\untitled2" -I"." -I"..\..\..\..\Qt\4.8.5\mkspecs\win32-g++" -o debug\main.o ..\untitled2\main.cpp
g++ -c -pipe -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.8.5\include\QtCore" -I"..\..\..\..\Qt\4.8.5\include\QtGui" -I"..\..\..\..\Qt\4.8.5\include" -I"..\..\..\..\Qt\4.8.5\include\ActiveQt" -I"debug" -I"." -I"..\untitled2" -I"." -I"..\..\..\..\Qt\4.8.5\mkspecs\win32-g++" -o debug\mainwindow.o ..\untitled2\mainwindow.cpp
C:\Qt\4.8.5\bin\moc.exe -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.8.5\include\QtCore" -I"..\..\..\..\Qt\4.8.5\include\QtGui" -I"..\..\..\..\Qt\4.8.5\include" -I"..\..\..\..\Qt\4.8.5\include\ActiveQt" -I"debug" -I"." -I"..\untitled2" -I"." -I"..\..\..\..\Qt\4.8.5\mkspecs\win32-g++" -D__GNUC__ -DWIN32 ..\untitled2\mainwindow.h -o debug\moc_mainwindow.cpp
g++ -c -pipe -g -frtti -fexceptions -mthreads -Wall -Wextra -DUNICODE -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.8.5\include\QtCore" -I"..\..\..\..\Qt\4.8.5\include\QtGui" -I"..\..\..\..\Qt\4.8.5\include" -I"..\..\..\..\Qt\4.8.5\include\ActiveQt" -I"debug" -I"." -I"..\untitled2" -I"." -I"..\..\..\..\Qt\4.8.5\mkspecs\win32-g++" -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp
g++ -mthreads -Wl,-subsystem,windows -o debug\untitled2.exe debug/main.o debug/mainwindow.o debug/moc_mainwindow.o -L"c:\Qt\4.8.5\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
c:\Qt\4.8.5\lib/libqtmaind.a(qtmain_win.o): In function `WinMain#16':
c:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
c:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
c:\Qt\4.8.5\lib/libqtmaind.a(qtmain_win.o): In function `ZN7QVectorIPcE7reallocEii':
c:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:512: undefined reference to `_Unwind_Resume'
c:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:513: undefined reference to `_Unwind_Resume'
c:\Qt\4.8.5\lib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: *** [debug\untitled2.exe] Error 1
mingw32-make[1]: Leaving directory `C:/Users/user/Desktop/build-untitled2-Unnamed-Debug'
mingw32-make: *** [debug] Error 2
12:40:07: The process "C:\MinGW-back\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project untitled2 (kit: Unnamed)
When executing step 'Make'
12:40:07: Elapsed time: 00:07.
I am using QT 4.8.5 that I downloaded from Qt libraries 4.8.5 for Windows (minGW 4.4, 317 MB)
and I am using MinGW that I got from installing Codeblocks MinGW
Please help. Its such a pain setting up QTCreator for Windows.
EDIT:
The solution was to use MinGW 4.4, which I found here: https://docs.google.com/file/d/0B4D8x6CJEmtuczdiQklwMEs4RUU/edit
You must use the MinGW-w64 toolchain shipped with Qt to link to the Qt libraries. Or rebuild Qt yourself with your toolchain, which for 4.8 isn't such a pain as it is for 5.x.
The ABI is different between the compiler versions you're linking, and there is no way to make these compatible.
I wrote a GCC Plugin which works very well. I created a Makefile which executes the following command to create the Plugin:
$ g++ -I$(INCLUDE_PATHS) -fPIC -shared $(SOURCE_PATHS) -o Plugin.so
I execute the Plugin with following command:
$ g++ -S -fplugin=./Plugin.so /TestProgramm.cpp
This works pretty well. Now I want to display a QT GUI when calling the Plugin. I wrote the GUI in Eclipse, so i got an auto-generated MakeFile. When executing the GUI, Eclipse executes following commands:
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I$(QT_INCLUDE_PATHS) -o debug/GUI.o GUI.cpp
g++ -Wl,-rpath,/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -o GraphGUI debug/GUI.o debug/main.o debug/GraphGUI.o debug/moc_GraphGUI.o -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -lQtGui -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -L/usr/X11R6/lib -lQtCore -lpthread
GraphGUI and GUI are the classes of the GUI I wrote.
Now I want to combine these statements in my own Makefile, so that the Compiler compiles my Plugin and my GUI. I started working with Makefiles a few days ago, so I only got the basics about Makefiles. Hope somebody can help me.
Here is my Makefile:
GCC := g++
FILENAME := Explorer.so
GCC_INCLUDE := -I/usr/lib/gcc/i686-linux-gnu/4.6/plugin/include
QT_INCLUDE := -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/default \
-I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore \
-I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui \
-I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include
SOURCE_FILES = ## Some .cpp files for the plugin ##
$(FILENAME):
#$(GCC) $(GCC_INCLUDE) -fPIC -shared $(SOURCE_FILES) -o $# $^
clean:
#rm $(FILENAME)
I tried creating object files of the GUI and then include them in the command which creates the Plugin; like this:
$(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/GUI.o src/Visualize/GUI.cpp
$(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/GraphGUI.o src/Visualize/GraphGUI.cpp
# /opt/QtSDK/Desktop/Qt/4.8.1/gcc/bin/moc -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. src/Visualize/GraphGUI.h -o debug/moc_GraphGUI.cpp
# $(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/moc_GraphGUI.o debug/moc_GraphGUI.cpp
$(GCC) $(PLUGIN_INCLUDE) -fPIC -shared $(SOURCE_FILES) debug/GraphGUI.o debug/GUI.o -o $# $^
If i execute it like this, I get undefined symbol: _ZN11QMainWindowC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE error. If I execute the two commands beginning with "#" too, I get "undefined reference to main". I just copied these commands from eclipse; I don't actually know what they are doing.