以前 iPhone/iPod touchでC言語プログラミング
このような記事を公開しました。 先日「Androidでは同じことできないの?」とメールを 頂きましたので、ご紹介しようと思います。
Androidは基本環境としてLinuxカーネルの上で動作していますので、 gccを動作させること自体は難しくありません。
ただ、iOSのように gcc 単体でパッケージが配布されていないので 手動で揃えようとすると意外に手間がかかります。
今回はそれをできるだけ簡単に導入して遊ぼう という趣旨です。 本格的に使うならCCToolsなどありますし。。。
環境
root化済みAndroid端末 (suとbusyboxが使用可能である)
gccバイナリの配置などにroot権限が必要です。 今回は、root化済みのXperia Z2(SO-03F)を使用します。
この機種は最新版ファームウェア用の簡易rootkitが 公開済みですので、この記事に興味をお持ちの方の レベルであれば難なく導入可能かと思います。
ターミナルの導入
何はともあれ端末エミュレータがないことには 話になりませんので、ターミナルソフトウェアを導入します。
こだわりがなければ Android Terminal Emulator を導入しておけば間違いありません。
GCCの導入
続いてGCCを配置していきますが、 前述の通り手動でやると意外に面倒ですので ちょっとズルをします。
まず CodePad GCC plugin をインストールします。
このパッケージは端末上でC言語他いくつかの言語での開発環境を提供する " CodePad で C/C++ を使うためのプラグイン "
として配布されていますが、実態は " gccとライブラリを所定のディレクトリに展開するツール " です。
CodePad自体も面白いツールですが、フル機能版は有料であり、 フリー版では新規ファイルを生成できなかったりししますので 今回はこのプラグインのみお借りします。
これで準備OKです。
○PATHの設定
あとはAndroid terminal emulater でPATHを設定すれば終わりです。
設定より [ 初期コマンド]の設定に以下のコマンドを指定します
export GCCHOME=/data/gcc_4_7_2; export GCCPATH=$GCCHOME/bin:$GCCHOME/arm-linux-androideabi/bin:$GCCHOME/libexec/ ;export PATH=$PATH:$GCCHOME:$GCCPATH
(全体で一行のコマンドです。)
gcc -v を実行して右画像のように表示されればOKです! C/C++ のソースコードをコンパイル可能になりました。
○実際に遊んでみる
というわけで環境が構築できたのでちょっと遊んでみます。
今回は Dots and Boxes というアメリカではポピュラーなゲームを遊びで実装しました。 日本で言うと、"◯✕ゲーム"のようなノリで楽しむゲームです。
日本語ページだと こちら で紹介されていました。
ルールを簡単に説明すると、 格子状に配置された頂点を用意して、その頂点を一辺ずつ交互に結んでいき 小さな正方形を囲むことができると、囲んだ人の得点となります。 全ての辺を結んだ段階で得点の多いほうが勝利です。 また、領域を囲むと、続けて辺を取ることができます。
簡単なルールのわりに必勝パターンを見つけるのが難しいので 遊び甲斐のあるテーマです。
ソースコードはこちら エスケープシーケンスを利用していますので、 Windows上なら Cygwin Linux,OS X ならそのままコンパイル可能です
プロンプト$頂点,頂点 と入力して辺を取得していきます。 ex) $0,1 ・・・辺0-1 を取得
このソースを使って実際にAndroid上でコンパイルできるか試します。
Android terminal emulater にて以下の操作をしていきます。
$ su
# cd /data/local/tmp
( # wget http://www.darkhorse.mydns.jp/data/dots.c )
# gcc dots.c -o dots
# chmod 755 dots
# ./dots
PC上のLinux環境と同じようにコンパイル&実行可能できました!
/data/local/tmp に移動するのは、 sdcard上などではパーミッションの関係で実行に問題が生じるため とりあえずここなら問題ないからです。
root化して busybox が導入されていれば wgetから sed や awk, vi などなど強力なツール群が使えますので 以外と遊べますね。