交叉编译Qt(Linux/MINGW -> 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代替了 CC_1(根据文档更改了路径以包含MXE目录的路径。)

mxe将所有内容构建为静态库,因此,当您跨编译程序时,您将获得一个在任何DLL上没有depenendies的单个.EXE文件。

相关内容

最新更新