2010/04/20

ARM用Linuxカーネルのクロスコンパイル環境構築

今日は、ARM用Linuxカーネルのクロスコンパイル環境をGentoo Linux上に構築してみようと思います。

以前ARM用アプリケーションバイナリを作成しQEMUでエミュレーション実行する手順を書きましたが、このときは日本語で見つかった情報でちゃちゃっとすませちゃった感があるので、今回は本家のドキュメントを参照しながらちゃんと進めていこうと思います。。

1. crossdevのインストール
Gentoo Linux上にクロスコンパイル環境を構築するのを支援してくれるツール、crossdevをインストールします。
# emerge crossdev 


2. ARMクロスコンパイラのインストール
crossdevを使用して、ARMクロスコンパイラをインストールします。
まず/usr/local/portageというディレクトリを作り、/etc/make.confに以下の行を追記します。
PORTDIR_OVERLAY="/usr/local/portage" 

そしてcrossdevを次のように実行します。
# crossdev --ex-gdb --stable --target arm-unknown-linux-gnu 

これでクロスコンパイラのインストールは完了です。


3. Linuxカーネルのクロスコンパイル
今回はカーネルモジュールのインストールについては考慮しません。また、カーネルソースは一般ユーザのホームディレクトリ下に展開するものとします。


まず、展開したソースの直下にクロスコンパイル用の以下のような内容のシェルスクリプトを作り、xkmakeという名前で保存します。
#!/bin/sh                                                        
exec make ARCH="arm" CROSS_COMPILE="arm-unknown-linux-gnu-" "$@" 


xkmakeに実行権限を与えます。
% chmod u+x xkmake 


あとはxkmakeを使って、x86と同じように下記のようにカーネルをコンパイルすることができます。
% ./xkmake menuconfig 
% ./xkmake            


---
ARMターゲットのコンフィギュレーションはさっぱり分からないので、この環境を利用してぼちぼち調べてみようかと思います。。



0 件のコメント:

コメントを投稿