« [Windows Mobile] Windows Mobileでも英文音声合成ソフトウェアfliteで遊ぶ | Main | [Zaurus] Rubyからシリアルポートをコントロール ruby-serialport »

2007.03.02

[Windows Mobile] Windows Mobile用クロスコンパイラ、CeGCC再び

以前のエントリCygwin/i386 Linux用Windows CE(PocketPC)クロスコンパイラCeGCCを試すの続編です。

そういえば、Cygwin / i386 Linuxで動作するARM CPU搭載Windows Mobile向けクロスコンパイラであるところのCeGCCの様子は最近どうかいな、ということで見に行ってみると、ちょうど2007年2月リリースのブツ0.10.0がアップロードされていました。

早速昨年10月にインストールした0.1.0と入れ替えてみました。

CeGCCのCygwin環境へのインストール

仔細は説明を省きますが、Cygwinをインストールします。その後に、

SourceForgeの当該ページへ行き、「cygwin binaries, svn 0.10.0.20070208」を落としてきます。

自分のとこではd:\cygwinがCygwinのルートなので、d:\cygwin\以下に上記のtarballを展開。
(以後、パスは自分の環境に読み替えてください)

展開すると、optから始まるディレクトリツリーが出来上がります。

~/.bashrcをいじるなどして、d:\cygwin\opt\cegcc\binにパスを通します。

自分の環境ではシンボリックリンク(0バイトのファイル)が機能していなかったので、それぞれ手動で実体と差し替えました。

シンボリックリンクはd:\cygwin\opt\cegcc\binに存在し、同一ディレクトリにあるツールや、d:\cygwin\opt\cegcc\arm-wince-cegcc\binにあるツールに向かって張られているようです。

要するにd:\cygwin\opt\cegcc\binにある0バイトのファイルの実体をd:\cygwin\opt\cegcc\binとd:\cygwin\opt\cegcc\arm-wince-cegcc\binから探して、シンボリックリンクの名前にリネームして置き換えるわけです。

もちろん、シンボリックリンクが機能する環境ではそんなことをする必要はありません。

いや、機能しなくとも、こんな頭悪くない解決策があるに違いません。

基本的に、これで基本的なインストールは完了(のはず)です。

Cのソースのコンパイルは、例えばtest.cというファイル名のソースを書いたとして、

arm-wince-cegcc-cc test.c -o test.exe

でできるはずです。

試しにQKCをコンパイル

QKCのソースがたまたまあったのでコンパイルしてみることにしました。

UNIX向けの「QKC - Quick KANJI code Converter C Version 1.0」というやつですね。
Makefileを編集して、コンパイラ指定を「CC = arm-wince-cegcc-gcc」に書き換えます。

そしてmake。何と! 何事も無かったようにコンパイルが通ります!

ActiveSync中のh2210にcecopyを使って出来たqkc.exeをコピー(いや別に普通の手段でファイルをコピーすればいいと思います)。

QKCを動かしてみる

CeGCCでコンパイルしたバイナリの実行にはDLLが必要です。

d:\cygwin\opt\cegcc\arm-wince-cegcc\lib\device\cegcc.dll
d:\cygwin\opt\cegcc\arm-wince-cegcc\lib\device\cegccthrd.dll

この二つのDLLをデバイスの\Windowsにコピーします。

とりあえずShift-JISで書いたテキストqkc.txtを用意して、MortScriptから実行してみます。

Run("\qkc.exe", "-e \qkc.txt")

確かにqkc.txtがEUC-JPにナッテル!!!

標準出力に表示されるヘルプなんぞを見たいなと思ってDOS窓Openをインストール。しかしqkc -Hしても何も表示されず。

どうやら、PocketConsoleを使うといいようです。(参考)

PocketConsoleをインストールしたら、\Windows\CMD.exeを起動します。

qkc -H

ヘルプ出ました! やべー、マジやべー普通に使えてます。

20070302054020

type qkc.txt | qkc -s >qkc2.txt

パイプ、リダイレクト、使えてます。typeなんて使ったの何年ぶりだよ。

その他の戦績

Debian JPのsed-ja-3.02.orig試しました。

CC=arm-wince-cegcc-gcc ./configure --host=arm-wince

でmake。とりあえず動きました。

echo test | sed -e 's/^.//'

est

p2conv試しました。

CC=arm-wince-cegcc-gcc

コンパイルできたっぽいです。

nkfコンパイルを試しました。MakefileのCCを

CC = arm-wince-cegcc-gcc

に書き換えてmake。コンパイルは通りましたが、出力が空です。正常な動作をしません。
ヘルプは表示されたので、スクリーンショットを貼っておきます。

20070302054059

wgetのコンパイルを試しました。

CC=arm-wince-cegcc-gcc ./configure --host=arm-wince

でとりあえずやってみました。コンパイルは順調に進むものの、リンク段階でundefined reference toが出ます。何のリンクが必要なんだ?

host.o:host.c:(.text+0x8a0): undefined reference to `__h_errno_location'

あとがき

分からない人には全く分からないでしょうが、これはかなり楽しいことになってきました。

ハードルの高くなさそうなもののコンパイルを試してみたいと思います。

|

« [Windows Mobile] Windows Mobileでも英文音声合成ソフトウェアfliteで遊ぶ | Main | [Zaurus] Rubyからシリアルポートをコントロール ruby-serialport »

Comments

Emacs 希望(ぼそっ)。

Posted by: maru | 2007.03.10 at 04:42 AM

maruさんコメントありがとうございます。いやー、無理っす!!
どうも未実装のAPIがまだあるみたいです。
Windows Mobile上でEmacsの新しいのが動いたら、そりゃうれしいですけどね。
いつかPOSIX対応になる日が来るんですかね。
CeGCCが一番それに近い感じはしますけど。

ちなみにtxt2pdbdocもコンパイルできたんですが、出来たDocの冒頭が削れるみたいで変でした。iPAQでDoc作ってPalmにビーム、Palmでちょっと化けながらも読めたときは得も言われぬ喜びがありましたけどね。

ちなみに、coLinux上にLinux版のCeGCCを入れてみたんですが、こっちはiconvが無い、と言われてマトモに動きませんでした。rpmを入れる際に--nodepsで依存関係のエラーを無視しろ、と公式サイトには書いてありますが、実際動かしてみると、iconvねーよ、と言われてしまいます。
yumに無かったのでそこで手を止めてしまいました。

(sed-ja)
http://moyashi.air-nifty.com/sed-arm-wince-3.02.zip
http://moyashi.air-nifty.com/qkc-arm-wince-1.0.zip

gnuplot新しいの超っ早でありがとうございます。
pdfが直接作れるそうで、試してみたいと思ってます。Hyper EstraierのRubyバインディング付きは早速ダウンロードさせてもらいました。
しかし、相変わらずmewestでdatabase problemが出ます……。

ぼちぼちやってきます。

Posted by: moyashi | 2007.03.10 at 08:06 AM

これは面白い!!
ちょいとW-ZERO3で試してみるとします。
有用な情報ありがとうございますー。

Posted by: verus | 2008.02.22 at 02:27 AM

いろいろ可能性ありそうですよね。
Linuxだとrpm一発で楽ですよ。

Posted by: moyashi | 2008.02.23 at 02:26 AM

The comments to this entry are closed.

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/13760/14098267

Listed below are links to weblogs that reference [Windows Mobile] Windows Mobile用クロスコンパイラ、CeGCC再び:

» 無償のWindowsMobile向け開発環境 [トドのつまりは・・・]
以前、ある目的のちょっとしたプログラムが作りたくて、MortScriptで作り始めたものの、どうしてもできない機能の壁があり断念せざるをえず、かと言って、そのためだけにマイクロソフトのWindowsMobile開発環境を購入する気が起きず、放置状態だった。そこで、無償で使え...... [Read More]

Tracked on 2009.10.20 at 12:49 AM

« [Windows Mobile] Windows Mobileでも英文音声合成ソフトウェアfliteで遊ぶ | Main | [Zaurus] Rubyからシリアルポートをコントロール ruby-serialport »