Android端末でC言語プログラミング

以前
 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 を取得

▼Linux上で動作させたところ

このソースを使って実際に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 などなど強力なツール群が使えますので
以外と遊べますね。

Add a comment