2

私はしばらくの間、PowerPC用にQt X11をクロスコンパイルしようとしていて、さまざまな問題を抱え続けています。

私のQtサポートから与えられた情報から、行う必要があるのは次のとおりです。

  1. 新しいmkspecを作成します
  2. mkspec/ linux-g ++を使用して、既存のディレクトリをコピーして変更しました。
  3. ツールチェーン、ライブラリ、およびインクルードを使用するようにqmake.confを変更します
  4. 次のconfigureコマンドを実行します。

    ./configure -arch <your arch> -xplatform <your mkspec> -prefix <where you want Qt installed> <other options>

  5. 構成が完了したら、を実行makeしますmake install。オプションで指定したディレクトリにQtがインストールされてい-prefixます。

これを行うにはあらゆる種類の問題がありました。

4

1 に答える 1

1

私の解決策:

  1. mkspecs/linux-g++にコピーmkspecs/linux-g++-<my arch>
  2. mkspecs/linux-g++/qmake.conf以下の例のように 変更します。詳細については、サンプル ファイルのコメントを参照してください。
  3. qplatformdefs.h変更する必要はありませんでしたが、アーキテクチャによっては変更する必要があります
  4. 質問のオプションを指定してconfigureスクリプトを実行するとmakemake install
  5. これで、クロスコンパイルされた Qt X11 に対してコードをコンパイルできます。mocuicなどはホスト用にコンパイルされているため、それに応じてコードが生成されます。
  6. クロスコンパイルされた Qt ライブラリでソフトウェアを実行するには、/libsQt をインストールした場所からターゲット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 の使用を強くお勧めします。

于 2010-10-06T23:01:07.233 に答える