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; }