OpenBlockS用のクロスコンパイラ

現在、Vine Linux 3.1 でOpenBlockS用のクロスコンパイラを導入しようとしている。
が、いきなりrpmのリビルドに失敗した・・・(汗
失敗したのは↓

rpm --rebuild binutils-cross-2.13.90.0.18-3.src.rpm

エラーはこんな感じ

 略
updating cache .././config.cache
creating ./config.status
creating ../binutils.spec
creating Makefile
creating doc/Makefile
creating bfd-in3.h
creating bfdver.h
creating po/Makefile.in
creating config.h
make[1]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd' に入ります
make  all-recursive
make[2]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd' に入ります
Making all in doc
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/doc' に入ります
make[3]: `all' に対して行うべき事はありません。
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/doc' から出ます
Making all in po
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/po' に入ります
( if test 'x.' != 'x.'; then \
    posrcprefix='../'; \
  else \
    posrcprefix="../"; \
  fi; \
  rm -f SRC-POTFILES-t SRC-POTFILES \
    && (sed -e '/^#/d' \
            -e '/^[     ]*$/d' \
            -e "s@.*@   $posrcprefix& \\\\@" < ./SRC-POTFILES.in \
        | sed -e '$s/\\$//') > SRC-POTFILES-t \
    && chmod a-w SRC-POTFILES-t \
    && mv SRC-POTFILES-t SRC-POTFILES )
( rm -f BLD-POTFILES-t BLD-POTFILES \
    && (sed -e '/^#/d' \
            -e '/^[     ]*$/d' \
            -e "s@.*@   ../& \\\\@" < ./BLD-POTFILES.in \
        | sed -e '$s/\\$//') > BLD-POTFILES-t \
    && chmod a-w BLD-POTFILES-t \
    && mv BLD-POTFILES-t BLD-POTFILES )
cd .. \
  && CONFIG_FILES=po/Makefile.in:po/Make-in \
     CONFIG_HEADERS= /bin/sh ./config.status
creating po/Makefile.in
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/po' から出ます
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/po' に入ります
file=./`echo tr | sed 's,.*/,,'`.gmo \
  && rm -f $file && PATH=../src:$PATH no -o $file tr.po
/bin/sh: line 1: no: command not found
make[3]: *** [tr.gmo] エラー 127
make[3]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd/po' から出ます
make[2]: *** [all-recursive] エラー 1
make[2]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd' から出ます
make[1]: *** [all-recursive-am] エラー 2
make[1]: ディレクトリ `/root/rpm/BUILD/binutils-2.13.90.0.18/bfd' から出ます
make: *** [all-bfd] エラー 2
エラー: /var/tmp/rpm-tmp.8819 の不正な終了ステータス (%build)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.8819 の不正な終了ステータス (%build)

で、エラーログはこんな感じ
cat /var/tmp/rpm-tmp.8819

#!/bin/sh

  RPM_SOURCE_DIR="${HOME}/rpm/SOURCES"
  RPM_BUILD_DIR="${HOME}/rpm/BUILD"
  RPM_OPT_FLAGS="-O2 -pipe -march=i386 -mcpu=i686"
  RPM_ARCH="i386"
  RPM_OS="linux"
  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
  RPM_DOC_DIR="/usr/local/powerpc-redhat-linux/share/doc"
  export RPM_DOC_DIR
  RPM_PACKAGE_NAME="binutils-cross"
  RPM_PACKAGE_VERSION="2.13.90.0.18"
  RPM_PACKAGE_RELEASE="3"
  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
  RPM_BUILD_ROOT="/var/tmp/binutils-cross-2.13.90.0.18-root"
  export RPM_BUILD_ROOT

  set -x
  umask 022
  cd ${HOME}/rpm/BUILD
cd binutils-2.13.90.0.18
CFLAGS="-O2" CXXFLAGS="-O2" ./configure \
        --target=powerpc-redhat-linux \
        --prefix=/usr/local/powerpc-redhat-linux --enable-threads
make

訳わからん
やっぱりRedHatでないと使えないのかねぇ・・・
とりあえす、tar拾ってきてやってみるとしよう・・・


インストール作業の流れはこんな感じ

#wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
binutils-cross-2.13.90.0.18-3.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
gcc-core-cross-3.2.2-4.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
gcc-cross-3.2.2-1.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
glibc-cross-2.3.1-1.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
glibc-headers-2.3.1-1.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
glibc-libs-2.3.1-4.src.rpm
wget ftp://ftp.plathome.co.jp/pub/OpenBlockSS/cross/SRPMS/\
linux-ppc-headers-2.4.20-1.src.rpm

//リビルド不可能
#rpm --rebuild binutils-cross-2.13.90.0.18-3.src.rpm
#rpm -ivh /root/rpm/RPMS/i386/binutils-cross-2.13.90.0.18-3.i386.rpm

//とりあえずtarからやってみる
wget ftp://ftp.ring.gr.jp/pub/GNU/binutils/binutils-2.14.tar.gz
tar xzvf binutils-2.14.tar.gz
cd binutils-2.12.1
./configure --target=powerpc-redhat-linux \
        --prefix=/usr/local/powerpc-redhat-linux --enable-threads

make
make install

rpm --rebuild linux-ppc-headers-2.4.20-1.src.rpm
rpm --rebuild glibc-headers-2.3.1-1.src.rpm
rpm --rebuild glibc-libs-2.3.1-4.src.rpm

rpm -ivh /root/rpm/RPMS/noarch/linux-ppc-headers-2.4.20-1.noarch.rpm
rpm -ivh /root/rpm/RPMS/noarch/glibc-headers-2.3.1-1.noarch.rpm
rpm -ivh /root/rpm/RPMS/i386/glibc-libs-2.3.1-4.i386.rpm

rpm --nodeps --rebuild gcc-core-cross-3.2.2-4.src.rpm
rpm -ivh /root/rpm/RPMS/i386/gcc-core-cross-3.2.2-4.i386.rpm

rpm --nodeps --rebuild glibc-cross-2.3.1-1.src.rpm
rpm -ivh /root/rpm/RPMS/i386/glibc-cross-2.3.1-1.i386.rpm

rpm --nodeps --rebuild gcc-cross-3.2.2-1.src.rpm
rpm -ev gcc-core-cross
rpm -ivh --nodeps /root/rpm/RPMS/i386/gcc-cross-3.2.2-1.i386.rpm

//適当に依存のない tar.gzを用意し、次の様にmakeを行ってみる。
./configure
make CC=/usr/local/powerpc-redhat-linux/bin/powerpc-redhat-linux-gcc

//バイナリをOpenBlockSに転送しうまく実行できれば問題無し


glibc-crossのコンパイル中@1時間経過?
どうも、今のところは問題なくコンパイルできてる模様・・・
しかし、もう時間が無い・・・というわけで放置して撤退するか
できれば、gcc-crossのコンパイルまで行ってから撤退したかったのだが・・・

追記:
問題無く、動作する模様
ただし、rpmでのインストールでは依存性のエラーが出るので「--nodeps」オプションを付加する必要がある。

面倒なのでテストは次のテストプログラムを使用

#include
#define print_sizeof(t) printf("%-12s:%4d bit\n", #t, sizeof(t)*8);
main()
{
print_sizeof(char);
print_sizeof(short);
print_sizeof(int);
print_sizeof(long);
print_sizeof(long long);
print_sizeof(float);
print_sizeof(double);
print_sizeof(long double);
print_sizeof(size_t);
print_sizeof(void*);
return 0;
}