2

ここからのクロスポスト、誰もアイデアを持っていないようです)

こんにちは、みんな、

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 と組み合わせて使用​​しています。

私はかなりグーグルで検索しましたが、これがどこから来たのかまだわかりません..多分あなたの誰かが私に正しいヒントを持っています;-)

4

1 に答える 1

3

MXE を使用してビルドできます。とても簡単です。あなたは単に行う:

make qt

ソースのダウンロード、クロス コンパイルを有効にするために必要なパッチの適用 (自分で Qt を手動でクロス コンパイルするのが失敗する理由かもしれません)、すべての依存関係の構築など、ほとんどすべてを自動的に行います。MXE はhttp://mxe.ccからダウンロードできます。もちろん、ソフトウェアをクロスコンパイルする方法についてはドキュメントを読んでください。

その要点は、代わりにqmake使用することですi686-pc-mingw32-qmake(ドキュメントに従って、MXEディレクトリを含むようにPATHを変更した後)。

MXE はすべてを静的ライブラリとして構築するため、プログラムをクロス コンパイルすると、DLL に依存しない単一の .exe ファイルが得られます。

于 2012-10-23T23:15:14.907 に答える