以前
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 などなど強力なツール群が使えますので
以外と遊べますね。
コメントを追加する