CDT/RSEによるクロスコンパイルとリモートデバッグ生産性向上への道 Eclipseで行うC/C++開発(3)(2/4 ページ)

» 2007年10月30日 00時00分 公開
[小泉健(NEC) ,@IT MONOist]

CDTでのリモートコンパイル

 組み込みソフトウェアの開発において、Linuxマシンをビルド環境として利用しているケースがあります。

 そのような場合、スタンダード Make C/C++ プロジェクトを利用すると、リモートシェル(「rsh」や「ssh」)とsambaのファイル共有などを利用して、以下のようにEclipse上からLinuxマシンのコンパイラを起動することが可能となります(図1)。


リモートコンパイルのイメージ 図1 リモートコンパイルのイメージ

スタンダード Make Cプロジェクト

 リモートビルドの手順を説明する前に「スタンダード Make C プロジェクト」の概要について簡単に紹介します。

 「スタンダード Make Cプロジェクト」と「管理 Make C プロジェクト」との違いはビルドの設定方法です。

 スタンダード Make Cプロジェクトは、makefileと連携してビルドを行うプロジェクトです。CDTからのビルド指示にmakeコマンドを連携させてビルドを実行します。

 ビルド/クリーンに対応するコマンドやコマンドオプションの変更は、プロジェクトの[プロパティー]画面の「C/C++ Make プロジェクト」にて行います(画面6)。

C/C++ Make プロジェクト 画面6 C/C++ Make プロジェクト

 それぞれの設定項目の意味は下記のようになります。通常は「ビルド・ディレクトリー」だけをmakefileの格納ディレクトリに変更すれば、ほかを変更する必要はありませんが、お使いの環境に合わせて修正してください。

名前 説明 デフォルト値
ビルド・コマンド プロジェクトのビルドを選択した際に起動されるコマンド make
ビルド(インクリメンタル・ビルド) プロジェクトのビルドを選択した際にコマンドに渡されるオプション all
クリーン プロジェクトのクリーンを選択した際にコマンドに渡されるオプション clean
ビルド・ディレクトリー ビルド・コマンドが実行されるディレクトリ。makefileが格納されたディレクトリを指定する なし

スタンダード Make Cプロジェクトによるリモートコンパイル

 それでは、sambaとrshを利用したリモートビルド方法について説明します。ここでは、以下の環境が準備されていることを前提に説明します。

  • sambaのファイル共有環境
  • WindowsマシンからLinuxビルドマシンへのリモートシェル(rsh)実行環境

 まず、samba共有されているフォルダをネットワークドライブで共有します。

 共有したネットワークドライブに、ソース格納用のフォルダ「src」を作成し、その中に前回の記事で作成した「Addition.h」と「Addition.c」を格納します。同フォルダに下記のmakefileを格納します。

CC         = gcc
C_SRCS    += ../src/Addition.c
OBJS      += ../src/Addition.o
C_DEPS    += ../src/Addition.d
 
CFLAGS     = -c -Wall -g -MMD -MF"$(C_DEPS)"
 
LD         = $(CC)
LDFLAGS    = -o
 
addition : $(OBJS)
        $(LD) $(LDFLAGS) addition $(OBJS)
 
$(OBJS):$(C_SRCS) Addition.h
        $(CC) $(CFLAGS) -o"$@" "$<"
 
all :
        ${MAKE} addition
 
.PHONY : clean
clean :
        rm addition $(OBJS)  

 makefileを作成したら、以下の手順でスタンダード Make C プロジェクトを作成します。

  1. [ファイル]−[新規]−[スタンダード Make Cプロジェクト]を選択
  2. 新規プロジェクトを作成するウィザードが起動するので、プロジェクトの名前を入力し、[次へ]ボタンをクリック。ここではプロジェクトの名前を「sample_remote」とし、[終了]ボタンをクリック
  3. [C/C++ プロジェクト]ビューに設定したプロジェクトが作成されたことを確認

 新規にソースフォルダを作成し、先ほどsamba共有フォルダ上に作成した、srcフォルダにリンクを設定します。

 「sample_remote」プロジェクトを選択して、[ファイル]−[新規]−[フォルダー]を選択します。[新規フォルダー作成]ダイアログが表示されるので、[拡張]ボタンをクリックし、samba共有フォルダ内の「src」にリンク設定をします。以下では「F:\addition\src」にリンクを設定しています(画面7)。

[新規フォルダー作成]ダイアログ 画面7 [新規フォルダー作成]ダイアログ

 設定が完了したら、[終了]ボタンをクリックします。リンク設定された「src」フォルダが作成されます。

 「sample_remote」プロジェクトに、makefile格納用の“make”フォルダを作成し、その中に以下のようなリモートシェルを実行するmakefileを作成します。リモートマシン名、ユーザー名はお使いの環境に合わせて修正してください。

all :
        rsh リモートマシン名 -l ユーザ名 -n "~/make.sh all"
 
.PHONY : clean
clean :
        rsh リモートマシン名 -l ユーザ名 -n "~/make.sh clean"  

 makefile内に設定したリモートマシンのユーザーのホームディレクトリに以下のようなmakeコマンド実行用のシェルを格納します。「makefileのあるディレクトリ」はお使いの環境に合わせて変更してください。

#!/usr/bin/sh
 
cd makefileのあるディレクトリ
make $1 

 「sample_remote」プロジェクトの最終的な構成は下記のようになります(画面8)。

「sample_remote」プロジェクトの構成 画面8 「sample_remote」プロジェクトの構成

 「sample_remote」プロジェクトの[プロパティー]画面から、「C/C++ Make プロジェクト」を選択し、「ビルド・ディレクトリー」にmakefileが保存されたディレクトリを選択します。

 ここでは“\sample_remote\make”と指定して[OK]ボタンをクリックしてください(画面9)。

「ビルド・ディレクトリー」にmakefileが保存されたディレクトリを選択 画面9 「ビルド・ディレクトリー」にmakefileが保存されたディレクトリを選択

 ここまでの設定が完了したら、管理 Make C プロジェクトと同様にプロジェクトのクリーンを行ってください。コンソールのログを参照するとリモートマシン上のコンパイラが実行され、実行形式ファイルが作成されたことが確認できると思います。

 CDTのグラフィカルビルド機能により、リモートマシン上のコンパイラも起動できました。

 このようにCDTでは、既存のクロスコンパイル環境に対して、グラフィカルなビルド環境を提供します。

 コンパイラのエラーフォーマットが、CDTの解析できるフォーマット(GNU形式)であれば、Eclipse上のC/C++エディタと連携したエラージャンプ機能を活用できます。また、バイナリーがCDTのバイナリー・パーサーに対応していれば、アプリケーションのシンボル情報もEclipse上から参照できるようになります。

メモ

T-Engineフォーラムでは、EclipseのC/C++エディタからT-KernelのSVC(サービスコール)の入力支援をするツールの研究も進めています。

T-Kernel SVC設定画面の提供により、T-KernelのSVCを安全にコーディングすることが可能です。

T-Kernel SVC設定画面 画面10 T-Kernel SVC設定画面


Copyright © ITmedia, Inc. All Rights Reserved.