2017-09-20 16 views
0

私は現在、プロジェクトをコンパイルし、Linuxベースのシステムを展開する32ビットターゲットに移植しようとしています。Qtを64ビットからクロスコンパイルするLinux

私のホストマシンはx86_64 Debian Stretchを実行し、私のターゲットはカスタムLinuxを実行しているAtmel SAMA5d2です。 私のクロスツールチェーンはbuildrootから生成されます。

現時点では、ビルドルートツールで生成されたツールチェーンを使用してターゲットのアプリケーションをコンパイルすることができます。しかし、私はQtを統合してターゲットのQtアプリを構築したいと思っています。

ターゲットプラットフォーム用のアプリケーションをビルドするには、ターゲット用にQtをコンパイルする必要があります。 これを行うには、ネイティブのものの代わりにbuildrootツールチェーンを使用するようにQtに伝える必要があります。

私は、または-xplatform <mkspec>を提供して、期待されるツールチェーンでQtを設定する必要があります。

明らかに私のターゲットはqtbase/mkspecs/devicesのデバイスリストにありませんので、私のターゲットのためのmkspecを作成することをお勧めします。私はちょっと失われていると私は唯一のドキュメントと私は私の問題をグーグルで見つかったからどのように行うのか分からないが

./configure -xplatform <my_mkspec> -embedded arm -prefix <customQtPath> 

私のコマンドは次のようになります。
armv7が32ビットのみであるため、ターゲットを32ビットに指定する必要もありますか?

私はこれについていくつかの助けを喜んでいるでしょう。おかげさまで

答えて

1

あなたの前提は正しいです。あなたは同様のスペックを読んだり、独自のものを作ることができます。たとえば、Pi2はarmv7デバイスで、this qmake.confから始めることができます。次に、構成に渡します:

-device <given_name> -device-option CROSS_COMPILE=<path_and_prefix> -sysroot <your_sysroot> 

パスを変更し、必要に応じてcflagsを調整します。次に、ビルドチュートリアルに従います。

+0

ドキュメンテーションにあるように、デバイスは 'qtbase/mkspecs/devices'のリストになければならないと思っていました。_italic_Theデバイスはconfigureツールの-deviceパラメータで選択されています。この引数の後に続く名前は、少なくとも部分的にdevicesの下にあるサブディレクトリの1つと一致する必要があります._italic_ この場所に仕様を作成する必要がありますか?また、これらのqmake変数の意味と使用についてのドキュメントはどこにありますか? – Arkaik

+0

はい、そこにあなたのものを置きます。 qmakeマニュアルがありますが、ほとんどは文書化されていません。他のチップのスペックと実験をお読みください。 –

+0

ありがとう、私はそれを試し、私が成功したらあなたに伝えるために戻ってきますが、Qtをbuildrootに追加するための修正があるので、しばらく時間がかかります。 – Arkaik

関連する問題