native開発環境
なんとなく作った
× native実行ファイルを構築する環境
○ nativeで実行ファイルを構築する環境
android native環境構築メモ
http://chirorijp.web.fc2.com/index.html
メモ整理が面倒なのでそのまま
手持ちのPCが非力(001HTに劣る)なので
Android上で構築してしまえばいいじゃないかと思ったが、
nativeのNDKでlibを作る
↓
PCへlibをadb pull
↓
PCでlibをapkへ盛り込む
↓
adb install
と結局PCを使わなければならず使い勝手が悪い
ところで、何故今更NDKなのかというと
・描画処理を実装するには/dev/graphics/fb0への書き込み権限が必要
・つまりroot権限が必要
・root化は前提にしたくない
・setuidはカーネルにより権限拒否される
・つまりglibcで吉里吉里をネイティブ構築するのは不可能
という訳で断念
あー
遠回り
× native実行ファイルを構築する環境
○ nativeで実行ファイルを構築する環境
android native環境構築メモ
http://chirorijp.web.fc2.com/index.html
メモ整理が面倒なのでそのまま
手持ちのPCが非力(001HTに劣る)なので
Android上で構築してしまえばいいじゃないかと思ったが、
nativeのNDKでlibを作る
↓
PCへlibをadb pull
↓
PCでlibをapkへ盛り込む
↓
adb install
と結局PCを使わなければならず使い勝手が悪い
ところで、何故今更NDKなのかというと
・描画処理を実装するには/dev/graphics/fb0への書き込み権限が必要
・つまりroot権限が必要
・root化は前提にしたくない
・setuidはカーネルにより権限拒否される
・つまりglibcで吉里吉里をネイティブ構築するのは不可能
という訳で断念
あー
遠回り
Dalvikからできた事
以下001HT(Android2.2)の話
assetsからfilesへコピーしたファイルに対して
java.lang.ProcessBuilder経由でchmodが可能
さらにjava.lang.ProcessBuilder経由で実行可能
app_*ユーザなら色々できそう
assetsからfilesへコピーしたファイルに対して
java.lang.ProcessBuilder経由でchmodが可能
さらにjava.lang.ProcessBuilder経由で実行可能
app_*ユーザなら色々できそう
ADBで001HTの中を見た
QEMUと比べると反応が段違いに良い
lsの表示とか感動
入っている物は普通の印象
ls → 使える
mkdir → 使えるけど-pは使えない(QEMUと同様)
chmod → Operation not permitted
adb pushで入れた静的実行ファイル → permission denied
shellユーザではお手上げ
lsの表示とか感動
入っている物は普通の印象
ls → 使える
mkdir → 使えるけど-pは使えない(QEMUと同様)
chmod → Operation not permitted
実機買った
経緯
描画処理はどうやって実装するか
↓
OpenGLにするか
↓
Mesa3Dがある
↓
libX11が必要
↓
何か色々必要
↓
色々ビルドしてみる
↓
クロスコンパイルではビルド環境の設定が混入するので回避が面倒
↓
SDK付属のQEMUでネイティブコンパイルを試みる
↓
CPUとかHDDのエミュレーションが遅い
↓
1.6GHzだとgccのコンパイルだけでも4日(96時間)以上かかる
↓
実機なら何とかなるんじゃないかと期待
で、購入
SoftBank 001HT HTC Desire HD
スペックと価格で決定
描画処理はどうやって実装するか
↓
OpenGLにするか
↓
Mesa3Dがある
↓
libX11が必要
↓
何か色々必要
↓
色々ビルドしてみる
↓
クロスコンパイルではビルド環境の設定が混入するので回避が面倒
↓
SDK付属のQEMUでネイティブコンパイルを試みる
↓
CPUとかHDDのエミュレーションが遅い
↓
1.6GHzだとgccのコンパイルだけでも4日(96時間)以上かかる
↓
実機なら何とかなるんじゃないかと期待
で、購入
SoftBank 001HT HTC Desire HD
スペックと価格で決定
Androidでglibc(7) Boost.Regex
TJS2エンジンで使用する正規表現ライブラリ
Boost.Regexをビルドする
Boost C++ Libraries
http://www.boost.org/
boost_1_46_1.tar.gzをダウンロード
(現時点では1.46.1が最新)
Cygwin上で展開
$ gzip -dc boost_1_46_1.tar.gz | tar xvf -
Regexライブラリのみビルドする
Android向けに以下のファイルを修正
boost_1_46_1/libs/regex/build/gcc-shared.mak
CXX=g++
LINKER=g++ -shared
↓
CXX=arm-none-linux-gnueabi-g++
LINKER=arm-none-linux-gnueabi-g++ -shared -Wl,-Bsymbolic -Wl,-soname,libboost_regex-gcc-1_46.so
ICU_PATH=d:/dev/cygwin/opt/local
コンパイラ、リンカはCodeSourceryのを使う
ICU_PATHはWindows式で
後はbuildディレクトリでmakeするだけ
$ cd boost_1_46_1/libs/regex/build
$ make -f gcc-shared.mak
boost_1_46_1/libs/regex/build/gccにsoファイルが出来上がるので
/opt/local/libへコピー
ヘッダファイルは
boost_1_46_1/boost/regex以下を
/opt/local/include/boost/regexへコピー
これで終わり
Boost.Regexをビルドする
Boost C++ Libraries
http://www.boost.org/
boost_1_46_1.tar.gzをダウンロード
(現時点では1.46.1が最新)
Cygwin上で展開
$ gzip -dc boost_1_46_1.tar.gz | tar xvf -
Regexライブラリのみビルドする
Android向けに以下のファイルを修正
boost_1_46_1/libs/regex/build/gcc-shared.mak
CXX=g++
LINKER=g++ -shared
↓
CXX=arm-none-linux-gnueabi-g++
LINKER=arm-none-linux-gnueabi-g++ -shared -Wl,-Bsymbolic -Wl,-soname,libboost_regex-gcc-1_46.so
ICU_PATH=d:/dev/cygwin/opt/local
コンパイラ、リンカはCodeSourceryのを使う
ICU_PATHはWindows式で
後はbuildディレクトリでmakeするだけ
$ cd boost_1_46_1/libs/regex/build
$ make -f gcc-shared.mak
boost_1_46_1/libs/regex/build/gccにsoファイルが出来上がるので
/opt/local/libへコピー
ヘッダファイルは
boost_1_46_1/boost/regex以下を
/opt/local/include/boost/regexへコピー
これで終わり