(来自here的交叉报道,因为似乎没人知道这个主意)

大家好,

我正在尝试为我的Windows从Linux交叉编译qt 4.8.3。最终目标是建立一个静态qt,但无论是否建立静态,我总是会遇到相同的错误。玩各种标志也无济于事:

./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x18dc): undefined reference to `QGb18030Codec::QGb18030Codec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x18ef): undefined reference to `QGbkCodec::QGbkCodec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x1902): undefined reference to `QGb2312Codec::QGb2312Codec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x1915): undefined reference to `QEucJpCodec::QEucJpCodec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x1928): undefined reference to `QJisCodec::QJisCodec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x193b): undefined reference to `QSjisCodec::QSjisCodec()'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x1956): undefined reference to `vtable for QEucKrCodec'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x1971): undefined reference to `vtable for QCP949Codec'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x198c): undefined reference to `vtable for QBig5Codec'
./.obj/release-shared/qtextcodec.o:qtextcodec.cpp:(.text+0x19a7): undefined reference to `vtable for QBig5hkscsCodec'

我将默认的win32-g++配置文件与mingw结合使用。

我在附近搜索了很多,但是我仍然不知道它来自哪里。.也许你们中的某人对我有正确的提示;-)

最佳答案

您可以使用MXE进行构建。这很容易。您只需做:

make qt

它几乎可以自动执行所有操作,包括下载源代码,应用所需的补丁程序以启用交叉编译(这可能就是为什么您自己手动交叉编译Qt失败的原因)以及构建所有依赖项的原因。您可以从http://mxe.cc下载MXE。当然,请阅读有关如何交叉编译软件的文档。

其要点是,使用qmake代替i686-pc-mingw32-qmake(根据文档将PATH更改为包括MXE目录之后)。

MXE将所有内容构建为静态库,因此当您交叉编译程序时,您将获得一个.exe文件,任何DLL上都没有依赖项。

09-05 21:58
查看更多