2010年10月12日

Linuxカーネルを別のディレクトリでビルドする

今日はLinuxカーネルをビルドするときにちょっとしたTipsを紹介します。

カーネルをいじっていると、時々、同一のソースからコンフィグを少しだけ変えたものを複数作って、切り替えて交互に動作を試したいということがよくあります。

そのたびにコンフィグファイルを差し替えて再ビルドしてもよいのですが、そのコンフィグファイルごとに別々のディレクトリでビルドできると便利です。



そのためにはmakeの時に O=dir をつけます。

$ mkdir test1
$ make xxxx_defconfig O=test1
$ make menuconfig O=test1
$ make -j4 O=test1

これで、test1/.config の内容でtest1/vmlinux がビルドされます。

ただし、O=dir をつけずにビルドした後だと、以下のようなエラーになることがあります。

$ make -j4 O=test2
  CHK     include/linux/version.h
  GEN     /opt2/koba/20101004/kernel/test2/Makefile
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
make[2]: `/opt2/koba/20101004/kernel/include/asm-arm/mach-types.h' is up to date.
  Using /opt2/koba/20101004/kernel as source for kernel
  /opt2/koba/20101004/kernel is not clean, please run 'make mrproper'
  in the '/opt2/koba/20101004/kernel' directory.
make[1]: *** [prepare3] Error 1
make: *** [sub-make] Error 2
make: INTERNAL: Exiting with 5 jobserver tokens available; should be 4!
$ 

この時は、メッセージの通り 'make mrproper' を実行すればよいのですが、ポイントは, .configファイルが消されてしまうので必要ならばバックアップをとっておくということと、make mrproper にはO=dir をつけないということです。

$ cp .config config.1
$ make mrproper

この後で

$ make -j4 O=test2

とすれば今度はうまくいくと思います。



トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード