当试图在Debian上交叉编译Qt 4.8.3时,构建失败,用于win32 [英] build failure when trying to cross-compile Qt 4.8.3 on Debian, for win32

查看:668
本文介绍了当试图在Debian上交叉编译Qt 4.8.3时,构建失败,用于win32的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试构建一个纯净的Qt 4.8.3压缩包,并使用以下命令配置生成:

I am trying to build a pristine Qt 4.8.3 tarball, and I configured the build with this command:

./configure -opensource -xplatform win32-g++ -device-option CROSS_COMPILE=i686-w64-mingw32-

以下是(re)运行 make 的结果:

Following is a result of (re)running make:

$ make
cd src/tools/bootstrap/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/tools/bootstrap'
make[1]: Nothing to be done for `first'.
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/tools/bootstrap'
cd src/tools/moc/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/tools/moc'
make[1]: Nothing to be done for `first'.
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/tools/moc'
cd src/tools/rcc/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/tools/rcc'
make[1]: Nothing to be done for `first'.
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/tools/rcc'
cd src/tools/uic/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/tools/uic'
make[1]: Nothing to be done for `first'.
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/tools/uic'
cd src/winmain/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/winmain'
make -f Makefile.Debug all
make[2]: Entering directory `/home/wena/src/qt-4.8.3/src/winmain'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/wena/src/qt-4.8.3/src/winmain'
make -f Makefile.Release all
make[2]: Entering directory `/home/wena/src/qt-4.8.3/src/winmain'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/wena/src/qt-4.8.3/src/winmain'
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/winmain'
cd src/corelib/ && make -f Makefile 
make[1]: Entering directory `/home/wena/src/qt-4.8.3/src/corelib'
make -f Makefile.Debug all
make[2]: Entering directory `/home/wena/src/qt-4.8.3/src/corelib'
i686-w64-mingw32-g++ -shared -mthreads -Wl,--out-implib,/home/wena/src/qt-4.8.3/lib/libQtCored4.a -o ../../lib/QtCored4.dll object_script.QtCored.Debug  -L'/home/wena/src/qt-4.8.3/lib' -L'/home/wena/src/qt-4.8.3/lib' -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 .obj/debug-shared/QtCored_resource_res.o 
Creating library file: /home/wena/src/qt-4.8.3/lib/libQtCored4.a
./.obj/debug-shared/qtextcodec.o: In function `setup':
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:771: undefined reference to `QGb18030Codec::QGb18030Codec()'
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:772: undefined reference to `QGbkCodec::QGbkCodec()'
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:773: undefined reference to `QGb2312Codec::QGb2312Codec()'
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:774: undefined reference to `QEucJpCodec::QEucJpCodec()'
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:775: undefined reference to `QJisCodec::QJisCodec()'
/home/wena/src/qt-4.8.3/src/corelib/codecs/qtextcodec.cpp:776: undefined reference to `QSjisCodec::QSjisCodec()'
./.obj/debug-shared/qtextcodec.o: In function `QEucKrCodec':
/home/wena/src/qt-4.8.3/src/corelib/codecs/../../plugins/codecs/kr/qeuckrcodec.h:77: undefined reference to `vtable for QEucKrCodec'
./.obj/debug-shared/qtextcodec.o: In function `QCP949Codec':
/home/wena/src/qt-4.8.3/src/corelib/codecs/../../plugins/codecs/kr/qeuckrcodec.h:91: undefined reference to `vtable for QCP949Codec'
./.obj/debug-shared/qtextcodec.o: In function `QBig5Codec':
/home/wena/src/qt-4.8.3/src/corelib/codecs/../../plugins/codecs/tw/qbig5codec.h:56: undefined reference to `vtable for QBig5Codec'
./.obj/debug-shared/qtextcodec.o: In function `QBig5hkscsCodec':
/home/wena/src/qt-4.8.3/src/corelib/codecs/../../plugins/codecs/tw/qbig5codec.h:70: undefined reference to `vtable for QBig5hkscsCodec'
collect2: ld returned 1 exit status
make[2]: *** [../../lib/QtCored4.dll] Error 1
make[2]: Leaving directory `/home/wena/src/qt-4.8.3/src/corelib'
make[1]: *** [debug-all] Error 2
make[1]: Leaving directory `/home/wena/src/qt-4.8.3/src/corelib'
make: *** [sub-corelib-make_default-ordered] Error 2

我使用最新的Debian 7(Wheezy)。

I am building on latest Debian 7 (Wheezy).

推荐答案

当使用-no-iconv进行cc-ing 4.7时,我也遇到了同样的错误。

I had the same error when cc-ing 4.7 with -no-iconv.

来到这个黑客到src / corelib / codecs / codecs.pri:

Came to this hack to src/corelib/codecs/codecs.pri:

win32 {
        !contains(QT_CONFIG,iconv) {
                # no iconv, so we put all plugins in the library
                HEADERS += \
                        ../plugins/codecs/cn/qgb18030codec.h \
                        ../plugins/codecs/jp/qeucjpcodec.h \
                        ../plugins/codecs/jp/qjiscodec.h \
                        ../plugins/codecs/jp/qsjiscodec.h \ 
                        ../plugins/codecs/kr/qeuckrcodec.h \
                        ../plugins/codecs/tw/qbig5codec.h \
                        ../plugins/codecs/jp/qfontjpcodec.h
                SOURCES += \
                        ../plugins/codecs/cn/qgb18030codec.cpp \
                        ../plugins/codecs/jp/qjpunicode.cpp \
                        ../plugins/codecs/jp/qeucjpcodec.cpp \
                        ../plugins/codecs/jp/qjiscodec.cpp \
                        ../plugins/codecs/jp/qsjiscodec.cpp \ 
                        ../plugins/codecs/kr/qeuckrcodec.cpp \
                        ../plugins/codecs/tw/qbig5codec.cpp \
                        ../plugins/codecs/jp/qfontjpcodec.cpp
        }
}

还有其他错误和黑客,但它看起来像他们走在4.8.3。

There were other errors and hacks, but it looks like they're gone in 4.8.3.

这篇关于当试图在Debian上交叉编译Qt 4.8.3时,构建失败,用于win32的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆