FORTRANの導入
今回は組込みボードに各種のインタープリタ言語を導入する方法について解説しますが、その前にC言語以外のコンパイラ言語の組込みボードへの導入について触れましょう。ここではFORTRAN言語の導入例について解説します。C言語以外のコンパイラ言語系は、FORTRAN言語以外も似たような方法での導入となります。
概要
SH7706LSRボードでは、ディストリビューションを導入をすればオンボードでコンパイル作業をしてそのまま実行することも可能ですが、ここではPCで開発をしてSH7706LSRボードで実行するというクロスコンパイル形態を考えます。
FORTRANコンパイラには、直接実行コードを生成するものと、C言語のコードを生成してそれをCコンパイラで実行コードを生成するトランスレータがあります。コンパイラは直接に実行コードを生成するものよりC言語のコードを生成するもののほうが軽量で導入がしやすいので、ここではC言語のコードを生成するFORTRANコンパイラシステムを導入します。クロスコンパイル形態なので、FORTRAN言語からC言語に変換するトランスレータは通常のPC上で実行するプログラムコードとなります。
注意が必要なのは、それぞれの言語にはそれぞれの特有の組込み関数が存在するので、トランスレータで変換されたC言語のコードはそのままではCコンパイラで実行できない点です。CコンパイラはCライブラリに存在する関数しか実行コードを生成できないので、そのままでは他の言語の組込み関数の実行コードが生成できません。
FORTRANの場合はFORTRAN特有の組込み関数は別途ライブラリとして用意しておき、C言語でクロスコンパイルするときにそのライブラリをリンクします。したがって、FORTRAN特有の組込み関数ライブラリは組込みボード向けにクロスコンパイルでライブラリを生成し、クロスコンパイラのなかにライブラリを追加します。
導入
FORTRANトランスレータ一式は以下のサイトがオリジナルです。
- The Netlib
- URL:http://www.netlib.org/
まとまったアーカイブf2c.tar.gzは以下でダウンロード可能です。
- Using gfortran or installing f2c and fort77
- URL:https://computation.llnl.gov/casc/Overture/henshaw/install/node8.html
アーカイブf2c.tar.gzを展開すると、FORTRAN特有の組込み関数ライブラリがあるlibf2cとトランスレータ本体であるsrcの2つのフォルダに展開されます。
まず、libf2cをSH3アーキテクチャ向けの実行コードにクロスコンパイルをしますが、標準ではPC向けのコードにコンパイルするようになっています。
makefileであるリスト1の13行目と21行目を以下のように変更します。
コンパイルは以下のように行います。
できあがったライブラリは、以下のようにクロスコンパイラの中に追加をします。
次に、srcフォルダ内にあるトランスレータを、通常のPC向けのプログラムコードとして同様にコンパイルします。
できあがったトランスレータは、PC上の実行ファイルがある適当なパスに以下のように追加をします。
これですべての導入が完了しました。
プログラム実行
PC上でFORTRAN言語のプログラムを作成します。
2つの変数に数値データを入力してから、その結果の四則演算結果を表示するサンプルプログラムはリスト2となり、ファイル名はsample.fとします。
FORTRAN言語のソースのコンパイルは以下のようにします。
できあがったSH3アーキテクチャー向けの実行ファイルである sample をSH7706LSRボード向けのファイルシステムの適当な場所にコピーをします。SH7706LSRボードでLinuxを起動し、SH7706LSRボード上のプロンプト上で以下のように実行をします。
awkインタープリタの導入
awk言語はデータ処理志向のプログラミング言語で、データの行ごとに処理コードがイベント駆動されるようになっています。何も条件指定がなければ各行ごとに無条件で処理コードがイベント駆動されますが、条件を指定すれば、その条件に合致した行のみ処理コードがイベント駆動されます。また、データ処理を行う際の前処理と後処理のコードも記述することができます。
awk言語はデータ処理志向のプログラミング言語ではありますが、前処理または後処理のコードのみを記述すれば、データ処理なしで通常のプログラミングを行うこともできます。
導入
SH7706LSRのサイトで標準公開しているファイルシステムは、そのままでawkコマンドが使えるようになっています。もし、BusyBoxでawkコマンドが含まれていなければ図1のトップメニューで「Editors」を選択し、図2のメニューで「awk」を選択します。その設定を保存してからBusyBoxを再コンパイルをしてSH7706LSRボード向けのファイルシステムにインストールします。
実行
まず、コマンド上で以下のような簡単な演算結果を表示するプログラムを実行してみます。
次に、リスト4のような品名と単価と個数のデータを読み込んで価格や総額を含んだ簡単な経理処理プログラム(リスト3)を実行してみます。
Perlインタープリタの導入
概要
PerlはWebサーバにおけるCGIプログラムのインタープリタ言語として定番ですが、フルセットのPerlでは組込みボードであまり使わないような機能も多く、フルセットではシンプルな組込みボードには向いていません。
実は現在のPerlの標準ソースパッケージではBusyBoxのようなコンパクトでシンプルな組込みボード向けの構築もできるようになっています。そのようにして構築したPerlは特にmicroperlという名称になっています。
microperlはフルセットではないですが、その分贅肉も少なく組込みボードに適したPerlといえるでしょう。
導入
microperlはBusyBoxにも組込み可能なようになってはいますが、今回は単体のコマンドとして導入します。最新版の標準Perlソースパッケージを適当なフォルダにコピーして展開します。
コンパイルは以下のようにします。
できあがった実行ファイルであるmicroperlは、SH7706LSRボードのLinuxファイルシステムの/usr/binなどの実行ファイルがある場所にコピーをします。
実行
SH7706LSRのLinux上でsample.plという名称のサンプルプログラム(リスト5)を作成し、実行属性を付与します。
ためしに、以下のようにコマンド上でサンプルプログラムを実行してみます。
そして、Webサーバのパスの/cgi-bin/以下にサンプルプログラムをコピーします。SH7706LSRでWebサーバを起動した状態で、外部からSH7706LSRをブラウザで/cgi-bin/sample.plにアクセスすると、図3のようにPerl記述したCGIプログラムが起動します。
次回は、さらにtcl言語インタープリタとlua言語インタープリタを組込みボードに導入をしてみます。