[Armadillo:02015] Q: Armadillo300のtoolchainのビルドについて

TOGAWA Satoshi email@hidden
2007年 9月 7日 (金) 09:38:42 JST


お世話になっております。戸川と申します。

Armadillo300のsoft-floatの件で、toolchainを再コンパイルしようと思いました。
挑戦しているのですが、glibcのコンパイルで失敗しています。

ただ、そこに至る過程でもいくつか修正すべき事柄があったので、
確認の意味も含めて書き残しておきます。以下、行ったことです。

環境: Debian GNU/Linux 4.0 (VMWare内)
参考文献: http://www.emdebian.org/docs/slind-toolchain.html
ファイルの取得元: http://armadillo.atmark-techno.com/filebrowser/armadillo-300/cross-dev/sources

1. binutils
$ tar xzvf ~/cross-dev-src/binutils_2.15.orig.tar.gz
$ zcat ~/cross-dev-src/binutils-2.15-crunch.patch.gz  | patch -p1
$ cd binutils-2.15
$ zcat ~/cross-dev-src/binutils_2.15-6.diff.gz | patch -p1
$ zcat ~/cross-dev-src/binutils-cross-2.15-6.patch.gz | patch -p1
$ chmod +x debian/rules
$ TARGET=arm-linux-gnu fakeroot debian/rules binary-cross (※1)
# dpkg -i ../binutils-arm-linux-gnu_2.15-6_i386.deb
(※1: TAEGETの指定をこのようにしておかないと、gcc(bootstrap)の
configre時にクロス用asなどを見つけられないようです)

2. gcc (bootstrap)
$ tar xzvf ~/cross-dev-src/gcc-3.4_3.4.3.orig.tar.gz
$ cd gcc-3.4-3.4.3.orig
$ zcat ~/cross-dev-src/gcc-3.4_3.4.3-13.diff.gz | patch -p1
$ zcat ~/cross-dev-src/gcc-3.4-cross-3.4.3-13.patch.gz | patch -p1
$ zcat ~/cross-dev-src/gcc-3.4.3-crunch.patch.gz | patch -p1
$ vi debian/rules.patch (後で置くconfigure-sed を追加する)
$ vi debian/rules2 (CONFARGSに--with-float=softを追加する)
$ cp /path/to/configure-sed.dpatch debian/patches (※1)
$ chmod +x debian/rules
$ GCC_TARGET=arm DEB_CROSS=yes NOGLIBC=yes dpkg-buildpackage -uc -us -rfakeroot -b -d
$ cd ..
# dpkg -i cpp-3.4-arm-linux-gnu_3.4.3-13_i386.deb gcc-3.4-arm-linux-gnu_3.4.3-13_i386.deb libgcc1-arm-cross_3.4.3-13_all.deb
(※1: gcc/configureにおいて修正が必要です。添付します)

ここまでは出来ていると思います。main()関数のみのCプログラムを
arm-linux-gnu-gccの-cオプション付でコンパイルして.oファイルを取得できました。

3. glibc
$ tar xzvf ~/cross-dev-src/glibc_2.3.2.ds1.orig.tar.gz
$ cd glibc-2.3.2.ds1
$ zcat ~/cross-dev-src/glibc_2.3.2.ds1-22.diff.gz | patch -p1
$ zcat ~/cross-dev-src/glibc-cross-2.3.2.ds1-22.patch.gz | patch -p1
$ zcat ~/cross-dev-src/glibc-2.3.x-crunch.patch.gz | patch -p1
$ chmod +x debian/rules
$ GLIBC_OVERLAYS='nptl-0.60.tar.bz2 glibc-linuxthreads-2.3.2.tar.bz2' dpkg-buildpackage -uc -us -rfakeroot -aarm -b -d (※3)
(※3: GLIBC_OVERLAYSを手動で指定しないと、dpatch当てに失敗します)

最後の dpkg-buildpackage をしたときに、glibcのconfigureに
失敗しているようです。
log-build-i486-linux-gnu-libc を見ると、
----
checking how to run the C preprocessor... arm-linux-gnu-cpp
configure: error: C preprocessor "arm-linux-gnu-cpp" fails sanity check
----
となっています。

対応すると思われる build-tree/i386-i686/config.log を見ると、
----
configure:2921: checking how to run the C preprocessor
configure:3023: result: arm-linux-gnu-cpp
configure:3038: arm-linux-gnu-cpp  conftest.c
configure:3033:20: assert.h: No such file or directory
configure:3044: $? = 1
configure: failed program was:
#line 3032 "configure"
#include "confdefs.h"
#include <assert.h>
                     Syntax error
configure:3038: arm-linux-gnu-cpp  conftest.c
configure:3033:20: assert.h: No such file or directory
configure:3044: $? = 1
configure: failed program was:
#line 3032 "configure"
#include "confdefs.h"
#include <assert.h>
                     Syntax error
configure:3105: error: C preprocessor "arm-linux-gnu-cpp" fails sanity check

----
となっています。

この段階では、 arm-linux-gnu-cpp 用の assert.h は
/usr/arm-linux-gnu/include にはインストールされていないので、
このエラーが出るのも当然のように思います。

glibcのビルドターゲットで、ヘッダのみを先にインストールするターゲットが
あるかと思って探しましたが、見当たらないようです。
(「参考文献」であげたサイトの記述では、DEB_CROSS_BOOTSTRAP=yesにするように
 書いてあったのですが、これでもだめなようです)

どのようにすれば、glibcをコンパイルできるのでしょうか?
よろしくお願いします。

以上です。

-- 
email@hidden
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: configure-sed.dpatch
型:         application/octet-stream
サイズ:     1985 バイト
説明:       無し
URL:        <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20070907/b849b339/attachment.obj>


armadillo メーリングリストの案内