Palm の開発環境では、 CodeWarrior for Palm OS が有名ですが、Palm社 が提供している クロスコンパイラ(prc-tools)を利用すると 無料で開発環境を作ることができます。
開発環境のインストール方法は、素晴らしいもの( Palm:CygwinとGCCで開発 )がありますので、ここではインストール以外で参考になりそうなことを書いてみます。
現在は、 Palm OS 5系になっていますが、もっている CLIE PEG T-400 は、 日本語版Palm OS(R) Ver.4.1 なので、それに合わせたメモです。
利用しているソフトウェアを紹介します。
Linux 上でコンパイル、実行確認は Windowsという変則的な方法をとっています。 ソースディレクトリを samba で共有して Windows から編集、 teraterm で Linux に接続し、m68k-palmos-gcc や make を使って コンパイル。Windows用のCLIE シミュレータで確認を行っています。
コンパイラ | prc-tools | prc-tools-2.3-1.i386.rpm | - |
リソースコンパイラ | pilrc | pilrc-3.2-1.i386.rpm | - |
make | GNU Make 3.80 | - | Fedora CORE2 |
Palm OS SDK | Core Palm OS SDK | sdk40.tar.gz | 要ユーザ登録 |
Palm OS SDK update | Core Palm OS SDK | sdk40upd1.tar.gz | 要ユーザ登録 |
Sony CLIE(Palm OS 4.0)用 SDK | Sony SDK 3.0 | cliesdk30j.zip | - |
Palm OS エミュレータ | Palm OS Emulator | CLIEpose.zip | - |
Palm OS エミュレータ用 ROM | PEG-T400 ROMイメージ | T400.ROM | - |
CLIE用シミュレータ | CLIE Palm OS Simulator | CLIE_PalmSim.zip | - |
リソース変換 | rsrc2rcp | Rsrc2Rcp_v219 | CodeWarriorリソース(.rsrc) を pilrc(.rpc)で扱えるようにするコンバータ |
PRC の中身を閲覧する | PRCExplorer | PRCExplorer1.0.19.1 | クリエイターIDやリソースの登録状況等がみれて便利 |
【メモ】
コンパイラ、SDK を入れた後に、palmdev-prep を実行しなければいけない。 これで、コンパイラが SDK を認識するようになります。
# palmdev-prep
Checking SDKs in /opt/palmdev
sdk-4 headers in 'include', libraries in 'lib'
When GCC is given no -palmos options, SDK '4' will be used by default
Writing SDK details to configuration files...
...done
あと、hello world を作る上でちょっとはまったのが、 include するファイル。
Pilot.h ではなく、PalmOS.h をインクルードすること。
#include <Pilot.h>
だと、
warning: #warning use PalmOS.h instead if you are using the 3.5 SDK or later;
you may need to run palmdev-prep or use a suitable -palmosN option
-- see "http://prc-tools.sourceforge.net/cgi-bin/info/ palmdev-prep" for details
と、怒られます。
gcc 環境である程度大きいプログラムをコンパイルしてみた時のメモです。 CodeWarriorコードから gccへの移植を行う場合も参考になるかもしれません。
ATOK for Palm OS に、 入力パネルを作成するSDK というのがあるので、こちらのサンプルをコンパイルしてみました。 パネルSDKは適宜インストールしてください。
入力パネルサンプルは、CodeWarrior for PalmOS R6 用なので、若干の修正が必要です。 サンプルは2つついてくるのですが、「顔文字(ATIPFac2)」の方を使ってみました。
最初に、CodeWarrior用のリソースファイル (InputPanel.rsrc)を pilrc でコンパイルできるように、 rsrc2rcp.exe 使って変換します。 InputPanel.rsrc と InputPanelRsc.h を rsrc2rcp.exe と同一ディレクトリに格納し、
> Rsrc2Rcp.exe -rsrc InputPanel.rsrc -F Jp -I InputPanelRsc.h -oRcp InputPanel.rcp
Rsrc2Rcp: Generating resource: 'InputPanel.rcp'.
とし、InputPanel.rpc を得ます。また、CodeWarrior用のリソースファイルに OtherRes.r という外部定義ファイルがあるので、これと同様なことをする記述を、 作成した InputPanel.rpc に書き込みます。
// --------------- Resources of type 'RANK' ---------------
HEX "RANK" ID 1000
0x84 0x10
上記を、InputPanel.rpc の上に書き足してください。 あわせて、ソースディレクトリに「InputPanelRsc.h」をコピーしておきます。
これでコンパイルできるようなりましたが、ファイル数もバイナリ作成までの 手数も多いので makefile をつくります。
TARGET = atokpocketbell
CC = m68k-palmos-gcc
CFLAGS = -O2 -g
PILRC = pilrc
BUILDPRC = build-prc
OBJRES = m68k-palmos-obj-res
LIBS = -lc
OBJS = ¥
InputPanel.o ¥
Face2Pref.o ¥
Globals.o ¥
MainForm.o ¥
Message.o
ICONTEXT = "ATPB"
APPID = ATOK
all: atokpocketbell.prc
$(TARGET).prc: code0000.$(TARGET).grc code0001.$(TARGET).grc data0000.$(TARGET).grc pref0000.$(TARGET).grc rloc0000.$(TARGET).grc Inputpanel.res
$(BUILDPRC) atokpocketbell.def code0001.$(TARGET).grc code0000.$(TARGET).grc data0000.$(TARGET).grc pref0000.$(TARGET).grc rloc0000.$(TARGET).grc *.bin
rm -f *.bin *.grc *.res
# オブジェクトの作成
code0000.$(TARGET).grc: $(TARGET)
$(OBJRES) $(TARGET)
code0001.$(TARGET).grc: code0000.$(TARGET).grc
data0000.$(TARGET).grc: code0000.$(TARGET).grc
pref0000.$(TARGET).grc: code0000.$(TARGET).grc
rloc0000.$(TARGET).grc: code0000.$(TARGET).grc
# ソースコードのコンパイル
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(TARGET) $(LIBS)
# リソースのコンパイル / 名前不定の *.bin 作成
Inputpanel.res: InputPanel.rcp
rm -fr *.bin
$(PILRC) -Fj -Loc jpJP -R InputPanel.res InputPanel.rcp
clean:
rm -f *.bin *.grc *.res
内容中、「atokpocketbell」が最終的に作成される .prc ファイル名です。ICONTEXTも適宜変えてください。
また、アプリケーション属性を atokpocketbell.def として別ファイルにしたので、これも作成します。
/*
* @(#)atokpocketbell.def
*
*/
application ipnl { "ATPB" ATOK }
multiple code { RANK }
ATOK がクリエイターIDで、ipnl というのが、ATOKパネルの type を示します。 ATPBがICONTEXTです。これは適宜変更してください。
あとは、
# make
で、コンパイルとリソース作成/バイナリ作成がされます。ただ、いくつかコンパイルエラーがでますので ソースファイルを修正します。 エラー該当部分にあるコメントをはずせばOKです。
修正し、コンパイルが通れば .prc ファイルが作成されると思います。 CLIEシミュレータには、ATOK が入っていないので、エミュレータのほうを使って動かしてみます。
無事動きました。 よかった。
ATOKを例にしてみましたが、ATOK に限らずこの辺が gcc 環境でのひな形に使えるとかと思います。
最近、Palm のソフトが少ないような気ががしますが、PalmOS 4以前であれば、 枯れてきて安心して作れるような時期でもありますね。ばんばんつくりましょう。:-)
※パネルSDKを gcc でコンパイルすることはサポート外だと思いますので、 Justsystemさんへの問い合わせはさけてください。