2009年8月25日火曜日

Androidコンパイル環境の最適化手法



f:id:bs-android:20060725140001j:image


Androidのフレームワークのソースコードを日々コンパイルされているみなさん、お元気ですか?


今回はコンパイルする時間を短縮する為のTipsを紹介します。


もちろんAndroid以外にも有効です。



Ubuntuのカーネルの最適化


デフォルトのカーネルでは最近主流のCPUのCore2Duoには最適化されていません。


その為、カーネルをCore2Duo向けに最適化されたコンパイルをしてカーネルを入れ替えてしまいましょう。



VMWareの場合

この方法はVMWare上のUbuntuでも可能ですが、


VMWare上でCore2Duoを有効にするには、手順の一番初めに


vmxファイルに


numvcpus = "2"


の記述を追加して再起動しておいてください。


これだけでも


make -j4


などでのコンパイルが速くなります。



コンパイルに必要なツールのインストール

まずは下記のコマンドで、apt-getを情報を最新の状態にします。



sudo apt-get update





そしてカーネルコンパイルに必要なツールをインストールします。



sudo apt-get install kernel-package libncurses-dev ncurses-dev libqt3-mt-dev





最新カーネルのソースコードの取得とコンパイル

最新カーネルのソースコードを取得します。



sudo apt-get install linux-source





取得できたら、/usr/srcに移動します。



$ cd /usr/src





そして先ほど取得したカーネルのソースコードを解凍しましょう。



$ sudo tar xjvf linux-source-2.6.**.tar.bz2


※**の部分は取得した時点のカーネルのヴァージョンに依存します。





解凍したディレクトリに移動します。



$ cd /user/src/linux-source-2.6.**


※**の部分は取得した時点のカーネルのヴァージョンに依存します。





現在のカーネルのconfigをコピーしておきます。



$ sudo cp /boot/config-2.6.**-**-generic .config


※**の部分は現在のカーネルのヴァージョンに依存します。


 /boot以下にある、最も新しいカーネルのconfigファイルを指定してください。





コピーしたconfigファイルの設定を反映させます。



$ sudo make oldconfig


現在のカーネルと最新のカーネルの間でコンパイルオプションが追加されている場合はいくつか質問されますが、Enterを押してデフォルト値で構いません。





xconfigでGUIでカーネルのconfigを変更します。



$ sudo make xconfig


※xを使っていない場合はmenuconfigで。


以下の項目を変更します。


Processor type and features->Processor family->Core 2/newer Xeon


Processor type and features->Preemptible Kernel(Low-Latency Desktop)


Processor type and features->Timer frequency->1000Hz


f:id:bs-android:20090824205159p:image


f:id:bs-android:20090824205617p:image


変更したらCtrl+Sで保存してウインドウを閉じます。





変更したカーネルを識別できるようにEXTRAVERSIONを変更しておきます。



$ sudo vi Makefile



EXTRAVERSION = -**-core2duo


※**は最新カーネルのヴァージョンに依存します。


「-core2duo」は任意の文字列で構いません。カーネルのヴァージョン番号の最後に付加されます。





コンパイルします。



$ sudo make-kpkg --initrd kernel_image





コンパイルが完了したら、カーネルパッケージをインストールします。


#ひとつ上のディレクトリにカーネルのdebパッケージが作成されているはずです。



$ cd ..
$ sudo dpkg -i linux-image-2.6.**-**-core2duo_2.6.**-**-core2duo-10.00.Custom_i386.deb


※**の部分は取得した時点のカーネルのヴァージョンに依存します。





成功していれば、OS再起動後に起動するカーネルを選択できるようになっているはずです。


適用されているかどうかは「uname -r」か「uname -a」で確認できます。



$ uname -r
2.6.**.**-core2duo






Android自体にはあまり関係ないですが、少しでもお役に立てば幸いです。





140 180 Android

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...