生産性向上への道 Eclipseで行うC/C++開発

生産性向上への道 Eclipseで行うC/C++開発(3)
〜 組み込みソフトウェア開発へのEclipse適用 〜

CDT/RSEによる
クロスコンパイルとリモートデバッグ

小泉健 NEC 2007/10/30

本連載では、C/C++言語を使ったプログラミング経験がある開発者向けに、オープンソースのビジュアル開発環境である“Eclipse”を用いた、C/C++アプリケーションのクロス開発方法について解説します。

- PR -

 前回は、サンプルアプリケーションを使って、C/C++開発環境CDTの機能を紹介いたしました。CDTのC/C++エディタやコンパイラ連携機能、グラフィカルビルド機能を用いることで、C/C++アプリケーションの開発を効率的に行えることが分かったと思います。

 今回は、前回と同じサンプルアプリケーションを用いて、CDTでの“クロスコンパイル”の方法、Remote System Explorer(RSE)での“リモートデバッグ”の方法について解説します。また、RSEによるリモート操作機能についても併せて紹介します。

 CDT、RSEの概要、インストール方法については第1回「組み込み開発におけるEclipseの有効性」を参照してください。

CDTでのクロスコンパイル

 クロスコンパイルの実行環境が整っていれば、CDTの管理 Make プロジェクトを利用してクロスコンパイルを行うことができます。

 今回はクロスコンパイルの説明のために、NECのWebサイト(http://www.nec.co.jp/cced/SDDSE/index.html)で提供しているサンプル「i686-pc-linux-gnu-gcc」を利用してRed Hat Linux向けにクロスコンパイルを行います。

:今回は、前回作成したプロジェクトを基に解説します。

 CDTの管理 Make プロジェクトにてクロスコンパイルを行うには、プロジェクトの[プロパティー]画面にて、クロスコンパイラ向けの設定を行います。それでは、前回作成した「sample」プロジェクトをクロスコンパイラ用に設定してみます。

 「sample」プロジェクトを右クリックし、[プロパティー]を選択してプロジェクトの[プロパティー]画面を開きます。そして、[C/C++ ビルド]を選択して、[ツール設定]タブの「GCC C コンパイラー」を表示します。「コマンド」欄にx86-Linuxコンパイラ「i686-pc-linux-gnu-gcc」を指定します(画面1)

画面1 [プロパティー]ダイアログの[ツール設定]タブ

 同様にリンカーとアセンブラーのコマンドも以下のx86-Linux用コマンドに設定します。

  • 「GCC C リンカー」 → i686-pc-linux-gnu-gcc
  • 「GCC アセンブラー」 → i686-pc-linux-gnu-as
:今回のサンプル以外のコンパイラを設定する場合には、同様に[C/C++ビルド]画面で「GCC C コンパイラー」「GCC C リンカー」「GCC アセンブラー」のコマンドを適切に設定してください。ここで設定するコマンドは、環境変数「path」で設定されたパス上に存在する必要があります。

 次に、ビルド成果物(実行形式ファイル)の名前を修正します。デフォルトでは、「プロジェクト名.exe」として実行形式ファイルが生成されるので、環境に合った名前に修正します。今回は“MyApplication”という名前に修正します。

[ビルド設定]タブをクリックし、下記のとおりに修正します(画面2)

  • 成果物の名前 : MyApplication
  • 成果物の拡張子拡張 : (なし)

画面2 [プロパティー]ダイアログの[ビルド設定]タブ

 バイナリー・パーサーをコンパイラに合わせて修正します。本サンプルで利用するクロスコンパイラで作成されるバイナリーの形式はELF形式になりますので、バイナリー・パーサーにELF用パーサーを追加します。

 [バイナリー・パーサー]タブを選択して、「GNU Elf パーサー」にチェックを入れます(画面3)

画面3 [プロパティー]ダイアログの[バイナリー・パーサー]タブ

 上記の修正が完了したら、[OK]ボタンをクリックして[プロパティー]画面を終了します。

:バイナリー・パーサーを正しく設定しないと、CDTがバイナリーファイルを正しく認識できずに、デバッグ構成設定時のバイナリーファイル検索などができなくなります。必ずお使いのコンパイラに合わせたバイナリー・パーサーを選択するようにしてください。

 これで、クロスコンパイルの設定が完了したので、プロジェクトの再ビルドを行います。

 「sample」プロジェクトを選択した状態で、メニューの[プロジェクト]−[クリーン]を選択します。コンソールには、設定したクロスコンパイラでビルドが行われたログが表示されます。

 これで[C/C++ プロジェクト]ビューには、x86-Linux用のクロスコンパイラで作成された「MyApplication」の実行形式ファイルが作成されるはずです(画面4)

画面4 [C/C++ プロジェクト]ビューの様子

 以上が、CDTによるクロスコンパイルです。

 ちなみに、作成されたmakefileの中身は以下のようになっています。

    -include ../makefile.init

    〜ビルド対象ソースの定義〜

    -include ../makefile.defs

    〜makeターゲットの定義〜

    -include ../makefile.targets

 CDTの管理 Make プロジェクトでは、ユーザー定義のmakefileを取り込むような仕組みも提供しています。CDTの管理 Make プロジェクトが生成するmakefileで情報が足りない場合には、プロジェクト直下に下記ファイル名のmakefileを格納することで対応できます。

埋め込み個所
makefile名
makfileの先頭 makefile.init
makeターゲットの定義前 makefile.defs
makefileの最後尾 makefile.targets

メモ  

CDTの管理 Make プロジェクトでは、Cソース、アセンブラファイル単位でのコンパイルオプションの変更もサポートしています。ソースごとにコンパイラ最適化レベルなどを変更する際に利用できます。

ソース単位でコンパイルオプションを変更したい場合には、対象のソースを右クリックしてメニューの[プロパティー]を選択後に起動される[プロパティー]画面にて、[C/C++ビルド]を選択して、適切な値を設定後に[OK]ボタンをクリックしてください(画面5)

画面5 [C/C++ビルド]で適切な値を設定


 このようにクロスコンパイラのビルド環境がそろっていれば、CDTを利用して簡単にグラフィカルなクロスコンパイルを行えます。

メモ  

CDTの管理 Make ビルドのオプションやエラーパーサーがお使いのコンパイラに対応していない場合には、CDTをカスタマイズすることで対応できます。

CDTのカスタマイズは「拡張ポイント」と呼ばれるカスタマイズポイントをCDTがあらかじめ提供しているので、簡単に行うことができます。詳細はCDT SDKに含まれる「CDT Plug-in Developer’s Guide」を参照してください。

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -