Standalone ToolchainでHello World (NDK) †Ubuntu(32-bit) + NDK(r8e,release8e)の環境で確認しています*1。
1. NDKのdocument「Android NDK Dev Guide」を一読する †アップデートの度に記述が変わっていたり追加されていたりするので毎回確認は必要です。今回は「Standalone Toolchain」の章が必須。 2. NDKを$HOME下に展開する †今回は「$HOME/ndk」に展開しました。後、環境変数の設定。 export NDK_ROOT=$HOME/ndk 3. Standalone Toolchainの作成 †もうイキナリ作りますか。 $NDK_ROOT/build/tools/make-standalone-toolchain.sh 実行すると /tmp下にtoolchainのパッケージが作られます。何もパラメータを設定しないとplatformを「android-3」、toolchainを「arm-linux-androideabi-4.6」で作られるようです。イマイチですね。
上記を踏まえた設定を作り直すと以下の通りになります。 $NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.6 --install-dir=$HOME/arm-linux-androideabi-4.6 $HOME下に「arm-linux-androideabi-4.6」というディレクトリーは出来たでしょうか。ついでに環境変数も設定しましょう。 export NDK_ARM46=$HOME/arm-linux-androideabi-4.6 export SYSROOT=$NDK_ARM46/sysroot export PATH=$NDK_ARM46/bin:$PATH export CC=arm-linux-androideabi-gcc export CXX=arm-linux-androideabi-g++ もちろん上記はバッチ処理で纏めてもいいんよ? 4. GNU Helloの展開 †Hello Worldと言ったらGNU Hello。 5. configureの実行 †取り合えずイキナリ作りますか。 cd $HOME/hello-2.8 ./configure --build=i686-pc-linux-gnu --host=arm-linux-androideabi --with-sysroot=$SYSROOT buildパラメータは、何か設定しないと起こられるので適当に設定した。Ubuntuだと「i686-pc-linux-gnu」、Cygwinだと「i686-pc-cygwin」。hostパラメータは、殆どの場合「arm-linux-androideabi」がデフォルトになると思う。 古いautoconfで作られた設定だとAndroidの設定(arm-linux-androideabi)を知らない場合がある。ググるとconfig.subあたりを新しいのに置き換えるテクが多かったのだが「autoreconf」コマンドを使った方が近未来的だ。 以下のコマンドでconfigureが最新のものに上書きされる。 autoreconf -ivf 6. make & make install †make make install DESTDIR=$HOME/armeabi 7. 実機での実行 †/armeabi/usr/local/bin/に「hello」という実行ファイルがあれば概ね成功。このファイルを実機で動作確認します。 デバッグ接続した端末に実行ファイルをコピーします。 adb push ~/armeabi/usr/local/bin/hello /data/local/tmp 即実行。 adb shell /data/local/tmp/hello 「Hello, world!」と表示されれば私と同じ。 もしかして/data/local/tmp下が見えない機種があるかも。実行権限が無い場合にはchmodあたりで付加するといい。 Key : NDK |