3

私のarm-linux用のQTおよびクロスコンパイルアプリケーションに関しては、少し混乱しました。

これまでのところ、AT91SAM9263-EK で Linux を実行しており、QT ライブラリを含む適切なファイルシステムを buildroot 経由で構築しています。

また、ubuntuでQT-4.8をビルドしました。

次に、サンプル アプリケーションを作成します。

  1. qmakeを使用して、ubuntuのQTのexamplesフォルダーにmakefileを作成しました。mkspecs/qws/linux-arm-g++ で与えられた qmake.conf を使用しました。

  2. make を実行すると、qatomic_i386.h と「エラー: 'asm' で制約を行うことはできません」というメッセージが含まれているため、エラーが発生します。このヘッダー ファイルは明らかに私の arm ツールチェーンと一致しません。

私の質問: 私の ubuntu で Qt を構成して、ARM 上の組み込み Linux 用の Qt バイナリをビルドする方法を教えてください。arm ツールチェーンによってビルドされたライブラリを含める必要がありますか?

どんな助けでも大歓迎です!

よろしく

編集: -spec フラグを使用して、「qmake.conf」がある「mkspecs/qws/arm-linux-g++」へのパスを渡します。腕に関連するライブラリへのリンクに関連するqmake変数がわからないため、ここでは何も変更しませんでした。したがって、make プロセスの開始時に確認できる適切なコンパイラが使用されます。しかし、qconfig.h という設定ファイルに、i386 に設定された ARCH フラグがあることを確認しましたが、これを設定する方法がわかりませんでした。このファイルを手動で編集する必要はないと思います。

EDIT2: 誰かがファイル qconfig.h の背後にあるものを知っていますか?? 手動で調整する必要がありますか?

4

3 に答える 3

5

私は自分でそれを解決します:)

しばらく苦労してウェブをスキャンした後、すべてがどのように連携するかについて少し深く掘り下げました。ARM ターゲット デバイス用の実行可能ファイルを生成する方法がわかりませんでした。私は2つのことを理解しました:

  1. X11 の QT パスを PATH 変数の先頭に追加しないでください。これにより、クロスコンパイルが台無しになる可能性があります。

  2. それに応じて qmake.conf を編集します。私の場合はbuildroot内にあるターゲットデバイス用のライブラリビルドを追加します。次の行を qmake.conf ファイルに追加 し
    ます
    。 QMAKE_LIBDIR_QT = /home/user/arm/toolchain/buildroot-2010.11/output/staging/usr/lib

これで実行できました。みんなありがとう!

于 2012-09-19T19:19:52.517 に答える
0

はい、ツールチェーンで Qt ライブラリを提供するか、qmake にそれらの場所を指示します。また、 -spec パラメータなしで qmake を呼び出していると思われます。ディストリビューションで見つけたqmakeを使用している場合、デフォルトの仕様が使用されますが、これはアームではないと思います。-spec パラメーターを追加し、arm mkspec をポイントします。また、生成された g++ コマンドが、arm 用にコンパイルされた正しい Qt ライブラリにリンクしていることを確認してください。

于 2012-09-18T18:47:56.097 に答える
-3

QtSDKアプリケーションの構築に使用する前に、組み込み Linux 用にインストールする必要があります。QtSDK申し訳ありませんが、現在 x86をお持ちです。組み込み Linux をインストールした後QtSDK、通常、デフォルトの mkspace として qws/linux-arm-g++ があります。組み込み Linuxがない場合はQtSDK、ソースからビルドできます。次に実行qmakeして、アプリケーションの Makefile を作成します。

$QTDIR_FOR_ARM/qmake

参考: Qt for Embedded Linux のインストールと Qt for Embedded Linux アプリケーションのクロスコンパイル

于 2012-09-19T05:25:26.143 に答える