Undefined references when compiling a static Qt build on Windows
I'd like to compile a static version of the Qt toolkit on the Windows platform (Windows XP SP3). I downloaded the latest release for Windows and successfully installed it. Then I opened the Qt 4.6.3 Command Prompt from the Start menu and invoked:
configure -static -release -nomake examples -nomake demos -fast
Configuration executes fine, and the first part of mingw32-make
as well. At some point I get a lot of undefined references:
mingw32-make[4]: Entering directory `C:/Qt-static/4.6.3/src/tools/moc'
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_MOC -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_TEXTCODEC -DQT_NO_CAST_FROM_AS CII -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTST REAM -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NODLL -I" ." -I"." -I"......\include" -I"......\include\QtCore" -I"......\include\Qt Xml" -I"....\xml" -I"c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1. 1\include" -I"......\mkspecs\win32-g++" -o release\moc.o moc.cpp...
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel oc -Wl,-s -Wl,-subsystem,console -mthreads -Wl -o ......\bin\moc.exe release/m oc.o release/preprocessor.o release/generator.o release/parser.o release/token.o release/main.o -L"c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\ Lib\" -LC:/Qt-static/4.6.3/src/tools/bootstrap/release -lbootstrap -luser32 release/moc.o:moc.cpp:(.text+0x14b): undefined reference to
release/moc.o:moc.cpp:(.text+0x156): undefined reference to `QByteArray::shared_QByteArray::shared_ null' release/moc.o:moc.cpp:(.text+0x150): undefined reference to
QByteArray::shared_ null'...
The list of undefined references is actually much longer.
This is out of the box on a pretty default Windows installation. I w开发者_如何学编程onder whether I'm doing something wrong or there's a bug in the toolkit.
I had similar problems. In my case Visual Studio had set environment parameters
INCLUDE
and LIB
which confused the make.
The solution was to disable them from the command line
set INCLUDE=
set LIB=
before compiling the Qt libraries.
精彩评论