2009年3月17日火曜日

Ubuntuで、HP-GCC !

はるまき様のWikiを参考に、UbuntuでHP-GCCを入れてみました。と書こうかと思ったのですが、Egan Ford氏のHP-GCCパッケージが初心者にとても使いやすく、これで取り敢えずは簡単なCのプログラムが動いてしまったので、その報告を行います。

Egan Ford氏のサイトから、hpgcc-linux.tgzというファイルを持ってきて、ホームディレクトリに展開すれば、これで導入は終わりです。簡単でしょう。もちろん、本格的にHP-GCCを活用するのであれば、はるまき氏紹介の方法の方が良いのでしょうが、取り敢えずCのプログラムをHP50gで動かしたいという初心者には、この方法がおすすめです。

** Egan Ford 氏サイト

「Extend your 50g with C (HPGCC 2.0SP2)」
http://sense.net/~egan/hpgcc/

しかし、これだけではコンパイルの環境が用意されて居りません。Ubuntuの場合、次の2つのパッケージをSynapticsを使い、導入しておきます。

** build-essential
** libgtk2.0-dev

Ford氏のパッケージの便利なところは、HPAPINEも同じMakefileでコンパイル出来てしまう所です。それでは、Ford氏に従いCプログラムをコンパイルしてみましょう。
先ずは端末を動かし、hpgccディレクトリに移動します。

cd ~/hpgcc

続いて、つぎのように入力します (点、スペース、「hpgccenv」、Enter)。

. hpgccenv

これで、環境変数を設定しました。後は、コンパイラを動かすだけです。でも、その前に作業用のディレクトリを用意しておきましょう。ここでは、展開して出来上がった「hpgcc」ディレクトリの中に「user」というディレクトリを設けました。以降は、このディレクトリの中で作業するので、つぎのように端末に入力して、ディレクトリを移動します。

mkdir user
cd user

続いて、ここへ「hpgcc/test/Makefile」をコピーしておきます。後はCのプログラムソースファイルを置きますが、ここでは「hpgcc/2.0SP2/examples/balls.c」を例に使う事にしました。

cp ../test/Makefile .
cp ../2.0SP2/examples/balls.c .

これで、コンパイルの準備が整いましたので、端末から

make

と入力すると、電卓向けのバイナリ「balls.hp」が作られる筈です。しかし、出来上がったバイナリは実機(電卓)に持っていって初めて実行できるものであり、開発を行うUbuntu側では実行できません。そこで登場するのが「HPAPINE」です。実は、Ford氏のパッケージでは、同じMakefileでHPAPINEを使って、Ubuntu上で実行可能なバイナリも作れるのです。

HPAPINEは、「HP-calc API Not Emulator」の略だそうで、電卓のエミュレータではなく、電卓のAPIをUNIXで実行できるように置き換えたもののようです。そのため、HPAPINEを用いると、電卓向けのCプログラムをPC-UNIXでコンパイルし、実行できるようになります。電卓用バイナリの実行については、はるまき氏のサイトを御参照下さい。
Ford氏のパッケージでは HPAPINEもコンパイル済みなので、すぐに利用できます。電卓のバイナリを作る際にはmakeと入力するだけでしたが、HPAPINEを用いたUNIX向けの実行ファイルを作るには、Cプログラムファイルのサフィックス「.c」を「_local」に置き換えたファイル名を指定します。先程のballs.cをコンパイルするには、

make balls_local

と入力するのです。すると、実行ファイル「balls_local」が出来上がるので、これを実行して、プログラムの出来具合を調べられます。

./balls_local

プログラムの終了は、電卓の場合にはONキーですが、HPAPINEの場合はESCキーです。

Ford氏のサイトでは、gdbを使ったデバッグ手法についても述べられています。残念ながら英語ですが、入門記事として平易に書かれているので、辞書を片手に読めば、どうにか理解できるものと思います。

ちなみに、Ford氏のパッケージは、HPAPINEがGDKを使って実行するようにコンパイルされています。通常はこのままで実行に支障はないと思われますが、非力なマシンだと、ウィンドウの表示に一拍、時間が掛かってしまうので、Xlibを使ったものに変更することも可能です。
hpgcc/2.0SP2-hpapine/ に移動して、make clean を実行後、 Makefile.inc を書き換えて make しなおせばOKです。

4 件のコメント:

akira さんのコメント...

こんにちは。
件のHPGCCとは関係ありませんが、私もEeePCにeeeUbntuとeeeXubuntuをインストールしてみました。

Ubuntuは7の頃に一度メインPCへインストールしたことがあります。ですがIntelの無線LANモジュールが使えず、有線LANは不自由する環境でしたので、すぐに消してしまいました。

「ライブCDの部屋」さんのeeeUbuntuシリーズは各EeePC向けに揃えてあり、ハード類もちゃんと動きました。
Ubuntuは凄いですね。
ただ、Linuxの作法や知識を持っていないため、他のドライブ(sdbやsdc)のパーティションやフォーマットにも悩みます。

解説サイトでポツポツと勉強していますが、まとまった情報が意外と少なく、検索疲れしてしまいました。
昔、情報科の友人が入学時に購入させられた教材のFreeBSDを使っていましたが、魔法をのようで素直に凄いと思いました。

akatuki さんのコメント...

akira 様、いらっしゃいませ。
エントリ日照りにコメント日照り、そんな中でのコメントはまさに干天の慈雨で御座います。有難う。

> 私もEeePCにeeeUbntuとeeeXubuntuをインストールしてみました。

入れちゃいましたね。見にいきました(ついでにコメントも)。
さすがに、オープンソースという事もあり、使えないハードもあるようですが、少しずつ改善されていくようですから、趣味としてサブマシンで使うならばそこそこ使えるのではないかと。

> 「ライブCDの部屋」さんのeeeUbuntuシリーズは各EeePC向けに揃えてあり、ハード類もちゃんと動きました。

「ライブCDの部屋」さんの所は本当に有難く、独自の日本語化ディストリが便利で、当方も色々とお世話になっております。

> Ubuntuは凄いですね。
> ただ、Linuxの作法や知識を持っていないため、他のドライブ(sdbやsdc)のパーティションやフォーマットにも悩みます。

いやね、当方も少しLinuxをかじっていたのですが、UbuntuはインストールするとGUIで大抵の機能が使えるので、最近はコレばかりです。(おかげで、コマンドラインの使い方も忘れかけております ... ) Ubuntuで一番良いのは、マルウェア対策がWindowsほど必要ではない所でしょうかね。まあ、普及してくれば、どうなるか判りませんが。

> 解説サイトでポツポツと勉強していますが、まとまった情報が意外と少なく、検索疲れしてしまいました。

必要な情報を集めるのは少々骨が折れますが、焦らずゆっくりとやっていこうじゃありませんか。当方も、PDF閲覧に関して、はるまき様に有難い情報を教えて戴きました程度のユーザーですが、そこそこ便利に使って居ります(web閲覧と簡単なメールくらいしか使うておりませんが)。

> 昔、情報科の友人が入学時に購入させられた教材のFreeBSDを使っていましたが、魔法をのようで素直に凄いと思いました。

FreeBSDとは、なかなか凄いですね。何者 ? ハッカーですか(「クラッカー」ではなく) ?

akira さんのコメント...

こんばんは。

>使えないハードもあるようですが
 eeeUbuntuシリーズに限って言えば、95%ぐらいのハードウエアが動いています。ネットブックは各社横並びのスペック・構成・パーツだと揶揄されがちですが、ソフトやOSにとっては互換性問題に悩まなくて良いというメリットがあります。今回はその恩恵を享受することができました。

>>入学時に購入させられた教材のFreeBSD
>FreeBSDとは、なかなか凄いですね。何者 ?

 情報科の教材のラップトップPCに、FreeBSDをインストールするのが、必修科目の一番最初の授業内容だと聞きました。
Win98でもNTでもなく、情報学科だけにUNIXですね。OSよりPCの方が凄く不安定のようでしたけれども。

akatuki さんのコメント...

> eeeUbuntuシリーズに限って言えば、95%ぐらいのハードウエアが動いています。ネットブックは各社横並びのスペック・構成・パーツだと揶揄されがちですが、ソフトやOSにとっては互換性問題に悩まなくて良いというメリットがあります。今回はその恩恵を享受することができました。

何だか、ネットブックが欲しくなっちゃった ...。