gcc-3.4.5クロス環境(2)

もうひとつの方法は、SHARPが提供するglibcを使う方法です。たたかうデジタリアンさんや、ぴろさんなどが詳しいので、細かい説明は割愛します。

前述のglibcへの依存関係の問題がない、というメリットがあります。

# 環境設定
#   $PREFIX 以下にクロス環境を生成。クロスビルド用のヘッダ・ライブラリを
#   $PREFIX/$TARGET/{include,lib} にインストールする
PREFIX=/opt/Embedix/gcc-3.4.5-xscale/
TARGET=arm-linux


#(1) binutils-2.16.1
tar jxvf binutils-2.16.1.tar.bz2 
cd binutils-2.16.1
./configure \
  --prefix=$PREFIX \
  --target=$TARGET \
  --enable-targets=xscale-linux-elf
make
make install
cd -

# 以後、ビルドしたbinutils(arm-linux-{ar,as,ld}など)を使うために PATHを変更しておく
PATH=$PREFIX/bin:$PATH


#(2) linux-headers (スペシャカーネル)
#   1.パッチを当てて、 2.configファイルを用意し、 3. make oldconfig
#   したカーネルソースを用意しておく ( linux-2.4.20_v18h.tar.bz2 とする)
tar jxvf linux-2.4.20_v18h.tar.bz2
mkdir -p $PREFIX/$TARGET/include/
cp -r linux/include/asm-arm  $PREFIX/$TARGET/include/asm
cp -r linux/include/linux  $PREFIX/$TARGET/include/


#(3) glibc-2.2.2 (SHARPが提供するglibc)
#   pthread.h,sigthread.h のバグを修正するためのパッチ
#   (glibc-arm-2.2.2-0.patch) を用意したので、適応しておく
rpm2cpio glibc-arm-2.2.2-0.i386.rpm  | cpio -ivd
patch -p1 < glibc-arm-2.2.2-0.patch
cp -r opt/Embedix/tools/arm-linux/include $PREFIX/$TARGET/
cp -r opt/Embedix/tools/arm-linux/lib $PREFIX/$TARGET/


# (4) gcc-3.4.5
tar jxvf gcc-3.4.5.tar.bz2 

#  crosstool-0.42 のパッチを利用する
tar zxvf crosstool-0.42.tar.gz
for p in crosstool-0.42/patches/gcc-3.4.5/*.patch
do
    patch -p1 -d gcc-3.4.5/ < $p
done

# configureオプション
#   --disable-shared : 共有ライブラリ(.so)を作成しない
#   --with-cpu=xscale --enable-cxx-flags=-mcpu=xscale : xscale->iwmmxt も可
cd gcc-3.4.5 
mkdir arm-xscale-cross ; cd arm-xscale-cross
CC=gcc \
../configure \
  --prefix=$PREFIX \
  --target=$TARGET \
  --host=i686-linux \
  --with-cpu=xscale \
  --enable-cxx-flags=-mcpu=xscale \
  --enable-languages=c,c++ \
  --disable-shared
make
make install

ファイル:


参考: