Android システムを、Ubuntu 上でコンパイル (クロスコンパイル)
開発環境
【関連する外部ページ】 http://source.android.com/source/initializing.html
- Android Studio のインストール
「Android Studio のインストール」のWebページを見て下さい
- Android Studio 下のファイルを使うように PATH の設定
.bashrc に次を追加
export PATH=$PATH:/usr/local/android-studio/sdk/tools:/usr/local/android-studio/sdk/platform-tools
- Oracle Java 6 のインストール
sudo add-apt-repository -y ppa:webupd8team/java sudo apt -y update sudo apt-get upgrade sudo apt -y install oracle-java6-installer sudo apt -y install oracle-java6-set-default
- java-6-oracle の選択
sudo update-java-alternatives -s java-6-oracle
- 開発用パッケージのインストール
sudo apt -y update sudo apt -y install git-core gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev x11proto-core-dev \ libx11-dev libreadline6-dev libgl1-mesa-dev \ libgl1-mesa-dev tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev \ libsdl-dev libesd0-dev libwxgtk2.6-dev
Android ソースコードのダウンロード
【関連する外部ページ】 http://source.android.com/source/downloading.html
- repo コマンドのインストール
mkdir /tmp/bin cd /tmp curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > /tmp/bin/repo sudo cp /tmp/bin/repo /usr/local/bin/repo sudo chmod 755 /usr/local/bin/repo
- Repo クライアントの設定
sudo mkdir /data/local sudo chown -R $USER /data/local cd /data/local /usr/local/bin/repo init -u https://android.googlesource.com/platform/manifest
- Android のソースコードのダウンロード
cd /data/local repo sync
- ダウンロード終了の確認
ビルド
- 初期化
cd /data/local source build/envsetup.sh
- ターゲットの選択
lunch aosp_arm-eng
- ビルド
make -j4
- ビルド終了の確認
- デバイスのフラッシュ
adb reboot bootloader fastboot flashall -w
- エミュレータ
which emulator emulator
- .bashrc に ccahche の設定
cd echo "export USE_CCACHE=1" >> .bashrc echo "export CCACHE_DIR=${HOME}/.ccache" >> .bashrc prebuilts/misc/linux-x86/ccache/ccache -M 100G
クロスコンパイルしてみる
https://elinux.org/Android_Tools
export PATH=$(pwd)/prebuilts/gtools/linux-x86/arm/arm-eabi-4.6/bin:$PATH
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
arm-eabi-gcc -o hello hello.c -Wl,-rpath-link=/Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib -L/Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib -nostdlib /Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib/crtbegin_dynamic.o -lc
https://android-tricks.blogspot.jp/2009/02/hello-world-c-program-on-using-android.html
以下、書きかけ
- ツールチェーンのソースコードのダウンロード
${NDKROOT}/build/tools/download-toolchain-sources.sh /tmp/ndk-$USER/src
- ソースコードのダウンロードの結果の確認
エラーメッセージが出ていないこと
- ビルド用の sysroot の準備
${NDKROOT}/build/tools/gen-platforms.sh --arch=arm rc-dir=/tmp/ndk-$USER/src --dst-dir=/data/local