2012/10/20

DreamPlug用のCrossdev

まだやってなかったのかと言われそうな気もしますが、、
Gentooだと簡単ですね

Gentoo Linux Documentation -- Cross-Compiling The Kernel
Crossdev - Gentoo Linux Wiki


まずディレクトリを作成しておく
# mkdir /usr/local/portage

/etc/make.conf に以下を追記
PORTDIR_OVERLAY="/usr/local/portage"

次に crossdev をインストール
# emerge -v crossdev

ターゲットのシステムを調べるには対象のマシンで gcc -v を実行すればいいと思う
# gcc -v 2>&1 | grep ^Target
Target: armv5tel-softfloat-linux-gnueabi

crossdev -S -t armv5tel-softfloat-linux-gnueabi でインストールできる(-S で stable を指定)
ただインストールする際に以下のようなエラーが出るので
package.keywords と package.use はディレクトリを作ってその中に入れるようにする
 * please convert /etc/portage/package.keywords to a directory
 * If you file a bug, please attach the following logfiles:
 * /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-info.log

以下のようにする (package.use も同じように)
# cd /etc/portage
# mv package.keywords default.keywords (ファイル名は何でもいいっぽい)
# mkdir package.keywords
# mv default.keywords package.keywords/

再度インストール
# crossdev -S -t armv5tel-softfloat-linux-gnueabi
-----------------------------------------------------------------------------------
 * crossdev version:      20120721
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         armv5tel-softfloat-linux-gnueabi
 * Stage:                 4 (C/C++ compiler)
 * ABIs:                  default
 
 * binutils:              binutils-[stable]
 * gcc:                   gcc-[stable]
 * headers:               linux-headers-[stable]
 * libc:                  glibc-[stable]

 * CROSSDEV_OVERLAY:      /usr/local/portage
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:
 * Portage flags:
  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~
  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-binutils.log
 * Emerging cross-binutils ...                                               [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-linux-headers-quick.log
 * Emerging cross-linux-headers-quick ...                                    [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-glibc-headers.log
 * Emerging cross-glibc-headers ...                                          [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-gcc-stage1.log
 * Emerging cross-gcc-stage1 ...                                             [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-linux-headers.log
 * Emerging cross-linux-headers ...                                          [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-glibc.log
 * Emerging cross-glibc ...                                                  [ ok ]
 * Log: /var/log/portage/cross-armv5tel-softfloat-linux-gnueabi-gcc-stage2.log
 * Emerging cross-gcc-stage2 ...                                             [ ok ]

armv5tel-softfloat-linux-gnueabi-xxx というファイル名でコンパイラがインストールされる これらを使ってカーネルをビルドしたい場合は以下のようになるのでスクリプトを作成しておいた
#!/bin/sh
exec make ARCH="arm" CROSS_COMPILE="armv5tel-softfloat-linux-gnueabi-" "$@"

0 件のコメント:

コメントを投稿