一年の計は元旦にあり…初心に戻ってtoolchainの復習からw

こっそり日記とかと言いつつHP公開してきて十数年、元旦に書いた記憶がない!まさに、本気モード!(何がw)

ほんと、忘れてるよ…自慢じゃないけどw

とりあえず、環境構築の備忘録的なアレで新年を向かえることに。

目的は、カーネルのクロスコンパイルなのでNDKを入手する。

ここからNDKをダウンロード。この時点で最新は android-ndk-r9c-linux-x86_64.tar.bz2

ディレクトリを作成して、カレントを移動。

$ mkdir -p $HOME/Development
$ cd $HOME/Development

次にダウンロードしたNDKを展開する。

$ tar xvjf $HOME/ダウンロード/android-ndk-r9c-linux-x86_64.tar.bz2

最新のandroid versionはこの時点で19なので、19を作る。

$ export ANDROID_NDK_ROOT=$HOME/Development/android-ndk-r9c
$ export SYSROOT=$ANDROID_NDK_ROOT/platforms/android-19/arch-arm
$ $ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-19 --install-dir=$HOME/Development/arm-android-19-toolchain

viかgeditかでカーネルビルド用の環境変数設定ファイル作る。(.bashrcとかに書いてもいいじゃんw)

export ARCH=arm
export CROSS_COMPILE=$HOME/Development/arm-android-19-toolchain/bin/arm-linux-androideabi-

ま、俺の場合、$HOME/Development/kbuildenv.sh というファイル名で保存して
必要に応じて

$ . $HOME/Development/kbuildenv.sh

じゃ、リハビリに公式arcのソースコンパイルしてみようか!(4.1.B.0.587)

$ make semc_anzu_defconfig
$ make

え?

(中略)
scripts/mod/modpost.c:1562:12: 警告: warn_unused_result 属性付きで宣言されている ‘asprintf’ の戻り値を無視しています [-Wunused-result]
scripts/mod/modpost.c: 関数 ‘add_marker’ 内:
scripts/mod/modpost.c:1982:10: 警告: warn_unused_result 属性付きで宣言されている ‘asprintf’ の戻り値を無視しています [-Wunused-result]
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
  HOSTCC  scripts/kallsyms
scripts/kallsyms.c: 関数 ‘read_symbol’ 内:
scripts/kallsyms.c:112:9: 警告: warn_unused_result 属性付きで宣言されている ‘fgets’ の戻り値を無視しています [-Wunused-result]
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/bin2c
  CC      init/main.o
In file included from include/linux/mempolicy.h:62:0,
                 from init/main.c:52:
include/linux/pagemap.h: In function 'fault_in_pages_readable':
include/linux/pagemap.h:415:16: error: variable 'c' set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors

make[1]: *** [init/main.o] エラー 1
make: *** [init] エラー 2
$

toolchainが新しすぎるんですね…ええ、分かります。

さて、本気出すか!

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です