aamall

2014年07月06日

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自体も面白いツールですが、フル機能版は有料であり、
フリー版では新規ファイルを生成できなかったりししますので
今回はこのプラグインのみお借りします。

Screenshot_2014-07-02-00-57-12





これで準備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

(全体で一行のコマンドです。)

Screenshot_2014-07-06-16-21-52Screenshot_2014-07-06-16-22-13








gcc -v  を実行して右画像のように表示されればOKです!
C/C++ のソースコードをコンパイル可能になりました。





○実際に遊んでみる

というわけで環境が構築できたのでちょっと遊んでみます。

今回は
 Dots and Boxes
というアメリカではポピュラーなゲームを遊びで実装しました。
日本で言うと、"◯✕ゲーム"のようなノリで楽しむゲームです。

日本語ページだと こちら で紹介されていました。

ルールを簡単に説明すると、
格子状に配置された頂点を用意して、その頂点を一辺ずつ交互に結んでいき
小さな正方形を囲むことができると、囲んだ人の得点となります。
全ての辺を結んだ段階で得点の多いほうが勝利です。
また、領域を囲むと、続けて辺を取ることができます。

簡単なルールのわりに必勝パターンを見つけるのが難しいので
遊び甲斐のあるテーマです。



ソースコードはこちら
エスケープシーケンスを利用していますので、
Windows上なら Cygwin
Linux,OS X ならそのままコンパイル可能です


プロンプト$頂点,頂点
と入力して辺を取得していきます。
ex)  $0,1 ・・・辺0-1 を取得


▼Linux上で動作させたところ
キャプチャff








このソースを使って実際に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

キャプチャdd







PC上のLinux環境と同じようにコンパイル&実行可能できました!


/data/local/tmp に移動するのは、
sdcard上などではパーミッションの関係で実行に問題が生じるため
とりあえずここなら問題ないからです。


root化して busybox が導入されていれば
wgetから sed や awk, vi などなど強力なツール群が使えますので
以外と遊べますね。











[!]Linuxをはじめよう!の運営にご協力ください
こちらよりAmazonギフト券による支援を募集しております。

受取人のEメールに hirohorse2-suplbl(アットマーク)yahoo.co.jp を設定してください
少額でも非常に助かりますので、お気に召されました記事がありましたら、何卒ご支援の方よろしくおねがいします。



hiroumauma at 16:56│Comments(0)TrackBack(0) Android | C_Programming

トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
月別アーカイブ