Armadilloフォーラム

Qtで作成したアプリケーションをターゲットで実行できない

haruka0606

2014年4月4日 11時06分

いつもお世話になっております。
中井と申します。

Qt Creatorで作成したアプリケーションをターゲットで実行させたいのですが、
ビルドすらできない状態になっております。

下記サイトの手順と見比べたところ、コンパイラのバージョンに不整合がある
模様です。どこに問題があるのでしょうか。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

[環境]
・atde5-amd64-20140131
・atmark-dist-20131018
・linux-3.4-at5
・Qt Creator 2.7.0 (Qt 4.8.4 64bit)

[問題点]
・【プロジェクト->キットを管理】 でArmadillo(armhf)の行に赤いアイコンを表示している
 ・クリックするとQtのバージョンが5.0.2になっている ★ここが怪しい
・【プロジェクト->armhf 実行】 で設定が下記の状況になっている
 ・【デプロイ-> first to deploy】 が空欄になっている
 ・【実行->実行構成】 に「何を実行するか感知しません」と表示されている

【プロジェクト->キットを管理】画面の表示内容についての記載がないため、何が
正しくて何が間違いなのかを判断できません。
(すぐに[デバイス]を選択する手順になっています)

なお、デスクトップ側では正常に動作しております。

以上、よろしくお願いいたします。

コメント

こんにちは
sazus@日本Qtユーザー会の一味です。

添付してあるURLを拝見させていただきました、
Armadilloの開発環境を提供する仮想マシンATDEを想定したドキュメントになってそうです。

それ以外の環境では、QtCreatorに対しては
クロスコンパイラの設定/使用するQtlibraryの設定
がないと適切なbuildができないです。

デスクトップ側では正常に動作している事を考えますと
クロスコンパイラの設定のうち
 ・コンパイラ設定がされていない
 ・QtVersions(makefileを生成するクロスコンパイラのqmakeが設定されていない)
 ・コンパイラ/qmake(Qtバージョン)の設定がキットに適切に設定されていない
が考えられます。

QtCreatorを開いて頂き、
ツール->オプション から ビルドと実行覧のtab
・キット
・QtVersions
・コンパイラ
のScreenCaptureを差し支えなければ添付等できますでしょうか?

私の方でも、ユーザーランドのAtmark-Distをダウンロードして
確認してみようかなぁっと思います。(buildしないといけないので、ちょっと時間がかかるかも)

sazus様
いつもお世話になっております。中井です。

早速のご回答、大変有難うございました。
ご依頼のSSを添付いたします。

※サイトにはQt 5.0が同包されていると記載されておりますが、
  ATDEから起動したQtのバージョンは4.8.4となっております。

以上、よろしくお願いいたします。

ファイル ファイルの説明
Qt_SS.zip Qt画面のスクリーンショット

ATDEの環境でやられていたっぽいですね。
っというか、自分で1から環境構築して
Atmark-DistをCrossCompileすると大変そうだったので
僕もATDEの環境で行ってみました。

ScreenShotを見て分かりました。
ちょっと僕が勘違いしていたみたいです。純粋に設定が間違っているだけみたいですね。

QtCreatorの ツール->オプション から ビルドと実行覧のtab の キット にて
コンパイラの設定を
GCC(armhf in /usr/bin)
から

32bit環境のATDEなら
GCC (x86 32bit in /usr/bin)
64bit環境のATDEなら
GCC (x86 64bit in /usr/bin)
にすれば、
赤文字の!マークは消えると思います。

またApplicationをCrossCompileにてbuildして頂き
$ file ./${APP_NAME}
ELF 32-bit LSB executable, ARM, version・・・

と表示されれば、ARM版のELFファイルになっていますので、それをArmadilloの方に
入れてもらえれば実行できると思います。
※ ${APP_NAME}はbuild時に生成されたApplication nameになります、各環境で読み替えてください。

sazusです。

キットの設定項目についての補足です
・デバイス:Armadillo (一般的な Linux 向けのデフォルト)
make後に、ArmadilloにSFTPにてデブロイするのに必要です。
ツール->オプション->デバイス
  にてホスト名の箇所のアドレスをArmadilloのIPアドレスに変更する必要
があります。

・Sysroot
Armadilloでの実行ELFファイル生成に必要なクロスコンパイルされた
root file systemのディレクトリの指定です。
CrossCompileされたQtのlibraryなどが入っているので指定しています。

・コンパイラ
下記の"Qtバージョン"で指定するqmakeを生成した時のコンパイラを指定します。
今回の場合は、このqmakeはATDE上のPCのコンパイラにて
生成されたものなので、デスクトップ向けのコンパイラを
指定しないとダメです。

・Qtバージョン
プロジェクトファイル(.pro)からMakefileを生成するために
 実行するqmakeを指定します。

・Qt mkspec
 本来、クロスコンパイルされたqmakeを"Qtバージョン"で指定した場合には
この覧の設定は、特に必要ないのですが
今回の場合、qmakeはATDE上のPCのコンパイラにて生成されたものなので
 別途、クロスコンパイラの設定ファイルがある、linux-arm-gnueabihf-g++
を指定しないとダメです。
 設定ファイルは、
 /usr/share/qt5/mkspecs/linux-arm-gnueabihf-g++
にあり、その中のqmake.confにクロスコンパイルの
コンパイラ指定などの設定ファイルがありますので
これをqmakeが解釈してクロスコンパイル用のMakefileを作成します。

キットの設定の"デスクトップ"と"Armadillo"を切り替えて
差異を見比べてもらうと、なんとなく分かると思います。

私が確認した時の
キットの設定ScreenShotを添付しておきます。

ファイル ファイルの説明
Screenshot_from_2014-04-04 17:38:37.png