特集

UNIX USER1月号「デスクトップで動かす・学ぶQt/Embedded」より転載:

Qt/Embeddedのインストール――第1回 フレームバッファでQtアプリ(その3) (1/5)

Qt/Embeddedを使って、Linuxデスクトップマシンで組み込みのGUIプログラミングを体験する本連載。今回はQt/Embeddedのインストールの後、動作確認を行い、デスクトップ上でフレームバッファを使用してプログラムが動かせるまでを解説します。
2004年12月18日 10時00分 更新
Qt/Embeddedのインストール

 次はQt/Embeddedのインストールです。

環境変数の設定

 先ほどのQt/X11での環境設定を破棄し、表10のように設定します。今回はQt/Embeddedで開発を行うので、ここで設定した環境変数が開発時の設定となります。PATHにQt/X11のbinを追加しているのは、Qt Designerなどのツールを使用するためです。

表10 Qt/Embeddedでの環境設定
環境変数 設定内容
QTDIR /usr/local/qt/qt-embedded-free-3.3.3を設定
MANPATH $QTDIR/doc/manを追加
LD_LIBRARY_PATH $QTDIR/libを追加
PATH $QTDIR/binと/usr/local/qt/qt-x11-free-3.3.3/binを追加

コンフィグレーション

 Qt/EmbeddedのconfigureスクリプトのオプションはX11のものと少し違います。オプション「-help」で、使用できるオプションを確認できます。今回は実行例2のようにコンフィグレーションします。

実行例2 Qt/Embeddedのコンフィグレーション
$ unset which
./configure -v                  \  ← 詳細メッセージ
>             -thread             \  ← スレッド
>             -depths 8,16,32     \
                     ↑ フレームバッファの深さ
>             -qt-gfx-transformed \
                     ↑ 回転フレームバッファ
>             -qt-gfx-matrox      \
                     ↑ Matroxグラフィックアクセラレータ
                        (今回の構成で使用しているため)
>             -qt-gfx-qvfb        \
                     ↑ 仮想フレームバッファqvfb
>             -qt-gfx-vnc         \  ← VNCサーバー機能
>             -debug                 ← デバッグモード

 この工程は、表8の環境で約8〜9分かかります。Qt/Embeddedでは、デフォルトで例外*とRTTI*が無効化されるようにコンパイラオプション「-fno-exceptions」と「-fno-rtti」*が設定されます。Qt/X11ではRTTIが有効になったままなので、開発時に注意が必要です。

コンパイル

 Qt/EmbeddedのほうはQt/X11のようにすべてをコンパイルする必要はありません。Qt DesignerやQt LinguistもQt/Embeddedで動作はしますが、コンソールで使用しても仕方がないですし、日本語入力もできません。フットプリント削減のために不要な機能を使わないようQt/Embeddedをインストールした場合には、これらの開発用のツールはQt/Embeddedではコンパイルもできなくなります(フットプリント削減については次回説明)。また、クロス環境ではほとんどの場合不要でしょう。

 必要なものをコンパイルするためにmakeターゲットは表11表12のようになります。まずは、ライブラリをコンパイルしましょう。

$ make sub-src

 ライブラリのみならば、表8の環境で1時間20分強で済みました。次に、プラグインをコンパイルします。

$ make sub-plugins

 こちらは4分ほどかかりました。Qt/X11でコンパイルしたuicをQt/Embeddedのbinにコピーかシンボリックリンクします。

リスト2 include/asm-i386/system.hのswitch_to()マクロ関数
$ cp /usr/local/qt/qt-x11-free-3.3.3/bin/uic \
> $QTDIR/bin

 コピーが必要なのは、Qt/Embeddedのサンプルコードなどでuicの絶対パスとしてQt/Embeddedのbinを参照するように扱われているためです。

表11 Qt/Embeddedのmakeターゲット
makeターゲット 説明
sub-src ライブラリのコンパイル
sub-tools 開発用ツールで、ターゲット機ではなく、
開発機で動かすツール
sub-plugins プラグインのコンパイル
sub-examples サンプルコード。必要に応じて、個々にコンパイル可能
sub-tutorial チュートリアル。必要に応じてコンパイルすれば良い

表12 sub-toolsで作成されるもの
作成されるファイル 説明
assistant Qt/X11でコンパイル済み
designer 同上
linguist 同上
qtconfig Qt/X11でコンパイル済み
qvfb Qt/X11で追加コンパイル済み

このページで出てきた専門用語
例外
C++の例外処理機能(Exception Handling)。コストがかかるため組み込み系ではコンパイル時に機能を抑制することが多い。

RTTI
RTTI(Run Time Type Information、実行時型情報)。実行時にオブジェクトの型を識別するための情報。コストがかかるため、組み込み系ではコンパイル時に機能を抑制する場合がある。しかし、プログラミングしていくうえで、安全なダウンキャストなどのために有用な機能なので、QtではQObjectに効率を損なわないqt_cast()を持っている。

コンパイラオプション「-fno-exceptions」と「-fno-rtti」
GCC C++コンパイラにおいて、C++の例外とRTTIを無効化するオプション。


      | 1 2 3 4 5 | 次のページ

[杉田研治,UNIX USER]

Copyright(c)2009 SOFTBANK Creative Inc. All rights reserved.



Feed Back
この記事についてのご感想【必須】


コメント


PR

キャリアアップ



エンタープライズ・ピックアップ

新春インタビュー2009:2009年 逆風に立ち向かう企業のIT経営
景気後退が必至といわれる2009年。「ピンチはチャンス」と発想を転換する企業もある。逆風に立ち向かうIT経営の実践が不可欠となる。ビジネスをITで変革する企業のトップに取り組みを聞く。

news028.jpg ロングインタビュー:トヨタの「自前主義」に微妙な変化――情シスを統括する大西常務
情報システムを開発し、所有する「自前主義」を貫いてきた同社だが、深刻化する不況の中で、それも微妙に変化している。トヨタで情報システムを統括する大西弘致常務役員に話を聞いた。

news073.gif JUAS調べ:企業の「Vista飛ばし」が鮮明に
クライアントPCのOSにWindows Vistaを導入せず、次期OS「Windows 7」の出荷を待つ企業が増えているとJUASが指摘した。現在は一世代前のWindows XPの満足度が総じて高く、Vistaの採用は進みそうにもない。

news050.jpg オルタナブログ通信:これでOracleは全部入り? OracleのSun買収、ブロガーの視点
ビジネス・ブログメディア「ITmedia オルタナティブ・ブログ」では、日々200組を越えるブロガーが、ITにまつわる時事ネタなどを発信している。今週は、「Sun買収」「Twitter」「コスト削減術」をテーマに紹介する。

news010.jpg タスクチームのススメ(1):売り上げ目標だけで走るチームの落とし穴
組織で起こる問題の原因は単一の部門ではなく、複数部門にまたがっていることが多い。さまざまな要素が絡み合った組織の問題を解決するために作られるのが「タスクチーム」だ。本稿では成功するためのタスクチームの作り方を6回にわたり紹介する。

news007.jpg わが社のコスト削減:外資ソフトが攻勢、「国策」定額給付金の支給管理にも
山梨県甲府市は3月、定額給付金支給管理システムにセールスフォース・ドットコムのサービスを採用した。SAPや新興BIの新たな動きが出てくるなど、ここにきて外資系ソフトウェアベンダーの攻勢が目立つ。

news005.jpg 逆境をはね返すサプライチェーン改革:鮮度が絶対条件、品質とスピードに徹した明治乳業の物流改革
牛乳やヨーグルトなどの市乳製品は鮮度の保持が絶対条件であるため、注文から納入までのリードタイムをどれだけ短くできるかがメーカーの物流における重要な課題だ。市乳製品が売り上げの多くを占める明治乳業では、いかなる工夫が見られるのだろうか。取り組みを追った。

news004.jpg 大企業のWebサイト構築法:「クリックされないサイトに価値は宿らない」――JAL、3年半ぶりのHP刷新に託した意図
JALが3年半ぶりにホームページを刷新した。Web経由で航空券やホテルの予約拡大を狙い、顧客ごとに情報を切り出して提供できるガジェットや自動推薦エンジンを取り入れた。Yahoo!などのポータルサイトにならったレイアウトに変更するなど、細部の作り込みにもこだわった。

news040.jpg 「2009 逆風に立ち向かう企業」NEC:企業のIT投資削減はあくまでも緊急避難、攻めに行く
NECの取締役常務執行役員を務める安井潤司氏は「2009年のIT投資は最悪の場合4割減るだろう」と話す。だが重要な投資は続くとみており「攻めにいく」という。安井氏にNECの2009年について話してもらった。

news017.jpg 「2009 逆風に立ち向かう企業」買う市:囲い込みは時代遅れ
インターネットショッピングのモールビジネスは、利用者とテナントの「囲い込み」ではなく「オープン化」が求められている――とlivedoorデパートなどを運営する買う市の平松庚三取締役は話す。同社が取り組む「オープン化」の戦略を聞いた。

news031.jpg 「2009 逆風に立ち向かう企業」富士通:顧客の顧客に注目する
2008年に就任した富士通・野副社長の好きな言葉は、成功するために耐えるという臥薪嘗胆。米国の金融危機に端を発する大きな不況の中で、舵取りが世界から注目されている。

news007.jpg 「2009 逆風に立ち向かう企業」NTTデータ:サービスの押し売りや顧客のご用聞きは低次元の営みだ
景気悪化に伴い多くの企業がIT投資を抑えようとする中、システムを提供するITベンダーは「ただ単に物を売る」というビジネス構造から脱却を図る必要がある。「システムインテグレーターの枠を超える」と標榜するNTTデータの荒田和之取締役常務執行役員に、ユーザー企業の動向を振り返ってもらった。

news012.jpg 「2009 逆風に立ち向かう企業」サイボウズ:売るのはソフトではない、「チームワーク」だ
企業情報の共有/活用は、ビジネスの礎である。グループウェア大手、サイボウズの青野社長は自社のコアコンピタンスを「チームワーク」に据え、エンドユーザーに価値を提供するという。

news005.jpg 「2009 逆風に立ち向かう企業」日産自動車:日産自動車の新たな“挑戦”――「日産GT 2012」
2008年5月に発表した決算で、2009年3月期の連結純利益が2期ぶりの減益に転じると発表した日産自動車。そんな同社を新たな成長軌道に乗せるために策定された5カ年計画が「日産GT 2012」だ。

news003.jpg 「2009 逆風に立ち向かう企業」カカクコム:消費者の買い控え傾向は追い風だ
価格比較サイトを運営するカカクコムは、景気後退により買い控えが鮮明になりつつある消費者の「買い物を失敗したくない」という心理をすくい上げ、右肩上がりの成長を続けている。安田幹広取締役COOは「商品に対する消費者の目は鋭くなる傾向にあるが、これは追い風だ」と言い切る。

news007.jpg 「2009 逆風に立ち向かう企業」三菱東京UFJ銀行:未曾有の金融・経済危機、今こそITの出番
大規模なシステム統合プロジェクトを完遂したメガバンクの雄、三菱東京UFJ銀行は、百年に一度という金融危機の中、生き残りを賭けて、さらなる経営改革に取り組む。根本常務執行役員情報システム部長は「ITの出番は多い」と話す。

news002.jpg 「2009 逆風に立ち向かう企業」ソニー:情シス部門が主役になる日
ソニーは2008年末、大規模な人員削減を発表した。コスト削減の圧力が強い一方で、情報システムを長期的な成長エンジンとして位置づける。ビジネス部門に積極的に提案をするようなIS部門を目指すと話すのは長谷島眞時CIOだ。