[Armadillo:08382] Re: libgcc1-dbg-armel-crossパッケージの生成方法

Yanagihara, Kosaku email@hidden
2012年 10月 22日 (月) 15:22:20 JST


>> アットマークテクノ様から配布されているlibgcc1-dbg-armel-crossパッケージ
>> は、既存のlibgcc1-dbg-armelパッケージからdpkg-crossで変換されたものでしょ
>> うか?
>> 
>> それともgcc-4.3をソースからリビルドしてlibgcc1-armel-crossと同時に生成し
>> たものでしょうか?
>
> gcc-4.3から作ってます。

こちらでは、build.shを参考に、以下の様な(build-gcc-4.3.sh)手順でgcc-4.3
をビルドしてみたところ、libgcc1-dbg-armel-crossは生成されませんでしたが、
yoshiさんの環境では生成されるということでしょうか?

それとも、これとは違った手順(buildcross-20100309.tar.gzとは違った手順)で
ビルドされているのでしょうか?

----------[ build-gcc-4.3.sh : ここから ]----------
#!/bin/sh

ROOTCMD=sudo
ARCH=armel

source_dir=/mnt/dvd/cross-dev/source

rm -fr build-gcc-4.3
mkdir build-gcc-4.3
cd build-gcc-4.3

tar xf ${source_dir}/buildcross-20100309.tar.gz
patches_dir=`realpath ./buildcross-20100309/patches`

# line 218 in build.sh
tar xf ${source_dir}/gcc-4.3_4.3.2.orig.tar.gz
vers=`realpath ./gcc-4.3-4.3.2.orig`
zcat ${source_dir}/gcc-4.3_4.3.2-1.1.diff.gz | patch -p1 -d ${_vers}
chmod +x ${_vers}/debian/rules

# line 221 in build.sh
cd ${_vers}

# line 223 - 229 in build.sh
patch -p1 < ${patches_dir}/s390-cross-no-biarch.dpatch || exit $?
patch -p1 < ${patches_dir}/gcc-4.3-4.3.2-gcc-suggests-no-mudflap-gomp.patch || exit $?

# line 236 - 237 in build.sh
${ROOTCMD} /usr/lib/pbuilder/pbuilder-satisfydepends-classic || exit $?

# line 239 - 240 in build.sh
GCC_TARGET=${ARCH} DEB_CROSS=yes fakeroot debian/rules control || exit $?

# line 250 in build.sh
${ROOTCMD} /usr/lib/pbuilder/pbuilder-satisfydepends-classic

# line 252 - 254 in build.sh
DEB_CROSS_NO_BIARCH=yes GCC_TARGET=${ARCH} DEB_CROSS=yes dpkg-buildpackage -us -uc -rfakeroot || exit $?

cd ..
_pwd=`pwd`
echo "Install following packaes."
for i in `ls -1 *.deb | grep -v gobjc`
do
    echo ${_pwd}/${i}
done
----------[ build-gcc-4.3.sh : ここまで ]----------

>> 私の手元では、前者の方法で作成したlibgcc1-dbg-armel-cross
>> (libgcc1-dbg-armel-cross_4.3.2-1.1_all.deb)をインストールすると、ターゲッ
>> ト(Armadillo-440)のカーネル起動時にKernel Panicが発生して起動しなくなっ
>> てしまいました。
>
> libgcc1 は、ユーザーランドのライブラリなので、カーネルがパニックする理
> 由にはならないような気がします。
> 
> 自作したパッケージには、何が入っているのでしょうか?また、どのくらいの
> サイズですか?ユーザーランドが大きくなりすぎて、inirdのサイズリミットに
> 引っかかっていませんか?

deb内容物の比較を以下に示します。

[DVD(A400_20120803)で配布されているlibgcc1-dbg-armel-cross]
$ dpkg -c /mnt/dvd/cross-dev/deb/armel/libgcc1-dbg-armel-cross_4.3.2-1.1_all.deb
drwxr-xr-x root/root         0 2010-02-22 13:50 ./
drwxr-xr-x root/root         0 2010-02-22 13:50 ./usr/
drwxr-xr-x root/root         0 2010-02-22 13:50 ./usr/share/
drwxr-xr-x root/root         0 2010-02-22 13:50 ./usr/share/doc/
drwxr-xr-x root/root         0 2010-02-22 13:50 ./usr/share/doc/libgcc1-dbg-armel-cross/
-rw-r--r-- root/root       274 2010-02-22 13:50 ./usr/share/doc/libgcc1-dbg-armel-cross/README

[公式libgcc1-dbgから生成したlibgcc1-dbg-armel-cross]
$ wget http://archive.debian.org/debian/pool/main/g/gcc-4.3/libgcc1-dbg_4.3.2-1.1_armel.deb
$ dpkg-cross -b -a armel libgcc1-dbg_4.3.2-1.1_armel.deb
$ dpkg -c libgcc1-dbg-armel-cross_4.3.2-1.1_all.deb
drwxr-xr-x root/root         0 2012-10-22 15:01 ./
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/share/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/share/doc/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/share/doc/libgcc1-dbg-armel-cross/
-rw-r--r-- root/root       274 2012-10-22 15:01 ./usr/share/doc/libgcc1-dbg-armel-cross/README
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/arm-linux-gnueabi/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/arm-linux-gnueabi/lib/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/arm-linux-gnueabi/lib/debug/
drwxr-xr-x root/root         0 2012-10-22 15:01 ./usr/arm-linux-gnueabi/lib/debug/lib/
-rw-r--r-- root/root    191852 2009-01-04 19:55 ./usr/arm-linux-gnueabi/lib/debug/lib/libgcc_s.so.1

内容物の比較をしてみて、新たな仮説を思いついたのですが、
DVD(A400_20120803)で配布されているlibgcc1-dbg-armel-crossは、
	Howto: Debianのパッケージに含まれるコンパイル済みのバイナリを
	Armadilloで動作させる方法 (/howto/use-debian-binary)
でpkg-configのインストール方法として紹介されているのと同じ手法で作成した
ダミーパッケージということはないでしょうか。



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