«

»

7月 23

GentooでARM(CortexA8)クロスコンパイル環境の構築

忘れないうちに。

NetwalkerのSoCはi.MX515(CortexA8)なので、アーキテクチャはARMx7A(hardfp)となります。(hardfpとは物理浮動小数点演算エンジンを詰んでるという事です。逆はsoftfpとなります。)
よって、crossdevで設定するアーキテクチャは armv7a-hardfloat-linux-gnueabi となります。

まず

# emerge crossdev
# mkdir /usr/local/portage
# echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/make.conf
# crossdev --ex-gdb --stable --target armv7a-hardfloat-linux-gnueabi

ここで、

please convert /etc/portage/package.use to a directory

と怒られるので、

# rm /etc/portage/package.use
# mkdir /etc/portage/package.use

とします。実はpackage.useはディレクトリでもいいので問題ないのです。慎重な方はバックアップしておくといいかもしれません。でもう一度

# crossdev --ex-gdb --stable --target armv7a-hardfloat-linux-gnueabi

これでコンパイル環境の構築が完了しました。(最後、 # crossdev -t armv7a-hardfloat-linux-gnueabi でもいいかも? 試してないので不明)

次にxkmakeという名前の次の内容のシェルスクリプトを作成し、実行権限を付与します。(アーキテクチャ名の最後のハイフンを忘れずに)

#!/bin/sh
exec make ARCH="arm" CROSS_COMPILE="armv7a-hardfloat-linux-gnueabi-" "$@"

最後にxkmakeを使用して普通にコンパイルします。

$ ./xkmake menuconfig
$ ./xkmake bzImage
$ cp arch/arm/zImage ~/kernel3.4.6-armv7a

なぜにzImage…? bzImage指定したんだけど… ARMだとデフォルトでこうなるのかな?
吐いたログをよく見たらちゃんとImageも出てました。

Kernel: arch/arm/boot/Image is ready

.config はここにおいておきました。

(実はまだこのカーネル動かしてみてないです。GentooをNetwalkerで動かす準備ができてからなので今日か明日中には…)

ちょっと参考ページを引用しすぎたかもしれません。ごめんなさい…

参考ページ

Permanent link to this article: http://lga128.nekobaka.net/2012/07/nw_linuxkernel_build/

コメントを残す

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

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Time limit is exhausted. Please reload the CAPTCHA.