概要
Aquaplus の携帯機 P/ECE
-mobile equipment- の開発環境は Windows 用に提供されているが、
言語処理系そのもの(≒ EPSON の著作物)以外のソースコードがすべて
公開されているため、多くの人がこいつを Linux で使えないかと挑戦し
ている。
この文書では、Linux から P/ECE のクロス開発をするための方法の一
例を解説する。
また Linux で P/ECE のクロス開発をするためのアプローチとしては、
nsawa さん
のgcc for S1C33 を
ソースからコンパイルして使うか、
Wine で本家開発環境
の gcc33 または nsawa さんの gcc for S1C33 バイナリ
をエミュレートして使うという二通りがある。
この文書では後者の、P/ECE 開発環境を Wine で使う方法を説明する。
環境
- P/ECE
-
初回生産分ではない、白モデル。
銀次郎さんにフラッシュ
メモリ 2MB 改造をしていただいたもの。システムは v1.20.
- コンピュータ
-
Lenovo ThinkPad
X61 7675-A31 Core 2 Duo T7500 2.2GHz, 4GB RAM, 160GB
HDD
Debian GNU/Linux sid kernel 2.6.26-1-amd64
ファイルのコピー
今のところ P/ECE 開発環境のインストーラは Wine では動かないので、
既に P/ECE 開発環境の入っているマシンから、P/ECE 開発環境を全部
Linux にコピーする。私の環境では Windows に
は c:/usr/piece/ にインストールされており、Linux に
は /usr/local/piece/ にコピーした。
Wine のドライブ名の振り方との関係から、このままでは pcc33 などが
ヘッダやライブラリを見つけられないので、関係するファイルを設定す
る。
/usr/local/piece/bin/pcc33.cfg を開き、
LIB=z:\usr\local\piece\lib
INC=z:\usr\local\piece\include
以上の 2 行を追加または修正して保存する。
Wine のインストール
いまどきの Linux distro なら Wine はパッケージシステム経由でイン
ストールできるはずなので、それをインストールする。
binfmt_misc を設定するパッケージ(Debian な
ら binfmt-support)を使って、.exe ファイ
ルを Wine 越しに実行できるよう設定する。
~/.wine/system.reg(なければ ~/.wine/config)を開いて、
System\\CurrentControlSet\\Control\\Session Manager\\Environment
このキーを探し、値 Path
に z:\\usr\\local\\piece\\bin を追加する。
~/.bash_profile (シェルが bash のとき)などを編集し
て、PATH 環境変数に /usr/local/piece/bin
を追加する。
シェルから pcc33.exe とやってみて、usage メッセージが出ることを確認する。
P/ECE 標準ヘッダへパッチ
この環境でコンパイルをしようとすると、
c:/usr/PIECE/include/stdlib.h:97:9: warning: extra tokens at end of #endif directive
この様なメッセージが limits.h や stdio.h, stdlib.h などに対して
表示されることがある。それらのヘッダファイルの末尾にあ
る #endif 行のあとに余計なマクロが書かれているので、こ
れをコメントアウトする。
stdlib.h と stddef.h で wchar_t の宣言がコンフリク
トしているというエラーになったら、stddef.h の _WCHART
というマクロを _WCHAR_T に直す。
stdarg.h を使おうとして _BOUNDARY が未定義というエ
ラーになったら、#define _STDARG_H の次の行
に #include <smcvals.h> という行を追加する。
TODO
- P/ECE コミュニケータやカーネルアップデータ、
isd
は使えないので、wo さん
の Linux
版 isd を使うしかない。gcc 4.3.2 だと make 一
発でコンパイル出来ているので、以下の対応は不要。
どうも、はじめまして。wo です。Linux の isd がコンパイルで
きない、とのことだったので、調べてみたら、たしかにバージョ
ン 2.95 あたりの gcc だとコンパイルできませんでした。
DEBUG_MSG を
#define DEBUG_MSG(format, ARGS...) (::n_debug::output(__FILE__ ":%d " format, __LINE__, ##ARGS ))
に直してあげといてください… gcc 拡張なんてうかつに使って
はいけないですな。。
改版履歴
- 2008.10.16
-
- P/ECE に Lua VM を載せる試みのついでに、現在の Linux 状況
に合わせて記事を加筆更新。
- 大昔(ぉ
-
リンク
|