私の解決策:
mkspecs/linux-g++
にコピーmkspecs/linux-g++-<my arch>
mkspecs/linux-g++/qmake.conf
以下の例のように 変更します。詳細については、サンプル ファイルのコメントを参照してください。
qplatformdefs.h
変更する必要はありませんでしたが、アーキテクチャによっては変更する必要があります
- 質問のオプションを指定してconfigureスクリプトを実行すると
make
、make install
- これで、クロスコンパイルされた Qt X11 に対してコードをコンパイルできます。
moc
、uic
などはホスト用にコンパイルされているため、それに応じてコードが生成されます。
- クロスコンパイルされた Qt ライブラリでソフトウェアを実行するには、
/libs
Qt をインストールした場所からターゲットlib
フォルダーにコピーするか、他のフォルダーに配置して LD_LIBRARY_PATH を設定して Qtlib
フォルダーを含めることができます。
例 qmake.conf:
#
# linux-g++-ppc_74xx の qmake 設定
#
MAKEFILE_GENERATOR = UNIX
テンプレート = アプリ
CONFIG += qt warn_on リリース増分 link_prl
QT += コア GUI
QMAKE_INCREMENTAL_STYLE = サブライブラリ
インクルード (../common/g++.conf)
インクルード (../common/linux.conf)
#
# g++.conf の修正
#
# my_arch-g++ は g++ の完全な実行可能パスです。PATH を確認してください。
# ツールチェーンのディレクトリが含まれています
#
QMAKE_CC = my_arch-g++
QMAKE_CXX = my_arch-g++
QMAKE_LINK = my_arch-g++
QMAKE_LINK_SHLIB = my_arch-g++
#
# ツールチェーンに含まれていないパッケージのインクルードとライブラリを提供する必要がありました
# これは主に X11 と glib のものです。あなたはどちらかをしなければならないでしょう
# 自分でクロスコンパイルするか、ディストリビューションから取得します
#
QMAKE_CFLAGS = -I/path/to/your/includes \
-L/path/to/your/libs
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
#
# linux.conf の変更
#
# 上記の g++ のものと同じ
#
QMAKE_AR = my_arch-ar cqs
QMAKE_OBJCOPY = my_arch-objcopy
QMAKE_STRIP = my_arch-strip
#
# Qt のソースを X11 にリンクする際に、方法によってはあらゆる種類の問題がありました
# インクルード パスを指定しました。私のツールチェーンはほとんどの X11 機能を提供しました
# そして、CXXFLAGS と CFLAGS に不足している部分を追加する必要がありました。
# ただし、X11 のインクルードとライブラリ固有の場所を正確に指定する
# 私のツールチェーンに、私が経験した問題のいくつかを修正しました
#
QMAKE_INCDIR_X11 = /path/to/your/toolchain/includes
QMAKE_LIBDIR_X11 = /path/to/your/toolchain/libs
ロード (qt_config)
アップデート:
このソリューションは、「スタンドアロン」コンパイルで機能します。Angstrom、OpenEmbedded、Android、OpenWRT などの Qt X11 をビルドする必要がある場合は、適切なコンパイルのためにそれぞれのビルド システムを使用する必要があります。たとえば、OpenEmbedded ターゲット (つまり、Angstrom) の場合、BitBake レシピを作成する必要があります。
この問題は、レガシー システムをサポートする必要があるために発生しました。Embedded Qt の使用はオプションではありませんでした。新しいプロジェクトでは、Embedded Qt の使用を強くお勧めします。