« ZaurusでMIDI制作 Z-MUSICコンパイラzmc3と標準MIDIファイルコンバータz2m3のZaurus向けパッケージ | Main | 今さら「おいでよ どうぶつの森」用支援ソフト「ふうせんタイマー」 »

2006.10.05

Cygwin/i386 Linux用Windows CE(PocketPC)クロスコンパイラCeGCCを試す

このエントリには続編「Windows Mobile用クロスコンパイラ、CeGCC再び」があります。

いつの間にか、Windows CE(PocketPC)用の凄そうなクロスコンパイラがリリースされていたので試してみた。

その名もCeGCC。本家っぽいのキテター!!

ARMベースのWindows CE専用のクロスコンパイラとのこと。
Rainerさんのcelib.dllよろしくunix-likeレイヤーを提供してくれるのがミソのようだ。

i386 Linux、Cygwin向けのバイナリが配布されていたので、とりあえずCygwin用のcegcc 0.1.0をダウンロードしてみる。

自分はd:\cygwinをcygwinのルートにしているので、d:\cygwin以下にtarballを展開。
.bashrcのPATHに/opt/cegcc/binを足して、「. .bashrc」する。

ただ、自分のcygwinが古めだからか、はたまた非NTFS(FAT32)だからか、シンボリックリンクらしきものが機能せず、arm-wince-pe-gccが起動しない。
思考が停止したのでシンボリックリンクを手動で本物に差し替えて解決する。
普通にlnkでよかったのかもしれない。

とりあえず、適当なソースを書いてみる。

#include <stdio.h>

int main(void);

int main(void)
{
FILE *fp;
if((fp = fopen("/test.txt", "w")) == NULL)
{
return(-1);
}
fputs("test\n", fp);
fclose(fp);
return 0;
}

んで、コンパイル。

arm-wince-pe-gcc test.c -o test.exe

ActiveSyncで出来たtest.exeをデバイス(iPAQ h2210)にコピー。
ちなみに、コピーにはcecopyというのを使ってる。ActiveSync中のデバイスにコマンドラインからコピーできるのでお気に入り。

実行に必要なdllもデバイスの\windowsにコピー。
結構サイズがデカい。けどしょうがない。

D:\cygwin\opt\cegcc\arm-wince-pe\lib\cegcc.dll
D:\cygwin\opt\cegcc\arm-wince-pe\lib\cegccthrd.dll
D:\cygwin\opt\cegcc\arm-wince-pe\lib\libstdc++.dll

今思えばd:\cygwin\opt\cegcc\arm-wince-pe\lib\device\以下にあるdllをコピーすればよかったのかもしれません。(追記:2007.03.02)

でもって、test.exeを実行。ルートにtest.txtがデキテター!!
標準出力とかはどうなっているのかはよく分かってない。

このCeGCC、結構よく出来てるらしく、「Just another Ruby Porter,」によると、Rubyがほぼそのままビルドできるらしい(自分の誤解かもしれんが)。

まだまだwork in progressな感じみたいだが、そのうちWindows CE(PocketPC)上にも酒池肉林な環境が出来たりするんだろうか。Emacsとか。

ちなみに、UnixyなOSで使えるActiveSync代替ソフトウェア、SynCEというのがあるそうだ。

|

« ZaurusでMIDI制作 Z-MUSICコンパイラzmc3と標準MIDIファイルコンバータz2m3のZaurus向けパッケージ | Main | 今さら「おいでよ どうぶつの森」用支援ソフト「ふうせんタイマー」 »