2007/02/19

glibcのアップデート

新規に構築中のGentooで, glibcのアップデートがsegmentation faultが出てこける.
いろいろと調べていくと, CHOSTの設定がおかしいことに端を発しているっぽい.
gentoo 2006.1をインストールした時は, i386-pc-linux-gnuだが, CPUはcoppermineなので
i686-pc-linux-gnuにしなければいけない.

ということで, CHOSTの変更.

Changing the CHOST variable
http://www.gentoo.org/doc/en/change-chost.xml

/etc/make.confを変更後,
emerge binutils gcc glibc
を行う.

CHOSTの変更を, gccのアップグレードを一緒に行うとシステムがおかしくなるらしいので,
別々に行うこと. (先にgccのアップグレードをして, 後からCHOSTを変更する手順を行う)
(CHOSTがi386となっている場合, gccのアップグレート中には
glibc 2.4以上を使ってはいけないので,
glibc 2.4以上はmaskしておく必要があるらしい. )

使用されるgccが正しいか確認.
# gcc-config -l
[1] i686-pc-linux-gnu-4.1.1 *

# gcc-config -c
i686-pc-linux-gnu-4.1.1

# cd /etc/env.d/gcc

# ls -la
total 8
drwxr-xr-x 2 root root 112 Feb 19 16:26 ./
drwxr-xr-x 4 root root 296 Feb 17 09:36 ../
-rw-r--r-- 1 root root  32 Feb 19 16:26 config
-rw-r--r-- 1 root root 292 Feb 19 16:25 i686-pc-linux-gnu-4.1.1

# grep 386 *

# grep 686 *
config:CURRENT=i686-pc-linux-gnu-4.1.1
i686-pc-linux-gnu-4.1.1:PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
i686-pc-linux-gnu-4.1.1:ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
i686-pc-linux-gnu-4.1.1:LDPATH="/usr/lib/gcc/i686-pc-linux-gnu/4.1.1"
i686-pc-linux-gnu-4.1.1:MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man"
i686-pc-linux-gnu-4.1.1:INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info"

# cd /etc/env.d/

# grep 386 *

# grep 686 *
05binutils:MANPATH=/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/man
05binutils:INFOPATH=/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/info
05binutils:LDPATH=/usr/i686-pc-linux-gnu/lib
05gcc:PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
05gcc:ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
05gcc:MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man"
05gcc:INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info"
05gcc:LDPATH="/usr/lib/gcc/i686-pc-linux-gnu/4.1.1"

使用されるbinutilsが正しいか確認.
# binutils-config  -l
[1] i686-pc-linux-gnu-2.16.1 *

# binutils-config  -c
i686-pc-linux-gnu-2.16.1

# cd /etc/env.d/binutils/

# ls -la
total 8
drwxr-xr-x 2 root root 128 Feb 19 13:14 ./
drwxr-xr-x 4 root root 296 Feb 17 09:36 ../
-rw-r--r-- 1 root root  15 Feb 19 13:14 config-i686-pc-linux-gnu
-rw-r--r-- 1 root root 126 Feb 19 13:14 i686-pc-linux-gnu-2.16.1

# grep 386 *

# grep 686 *
i686-pc-linux-gnu-2.16.1:TARGET="i686-pc-linux-gnu"
i686-pc-linux-gnu-2.16.1:LIBPATH="/usr/lib/binutils/i686-pc-linux-gnu/2.16.1"
i686-pc-linux-gnu-2.16.1:FAKE_TARGETS="i686-pc-linux-gnu"

今回は, 2.16.1から2.16.1へのアップグレードなので, 問題なかったみたい.

こけたときのメッセージ.
CPP='i386-pc-linux-gnu-gcc -E -x c-header'  /var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/elf/ld-linux.so.2 --library-path /var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/math:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/elf:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/dlfcn:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/nss:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/nis:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/rt:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/resolv:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/crypt:/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/linuxthreads /var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/sunrpc/rpcgen -Y ../scripts -h rpcsvc/bootparam_prot.x -o /var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/sunrpc/rpcsvc/bootparam_prot.T
make[2]: *** [/var/tmp/portage/sys-libs/glibc-2.5/work/build-default-i386-pc-linux-gnu-linuxthreads/sunrpc/rpcsvc/bootparam_p
rot.stmp] Segmentation fault
make[2]: Leaving directory `/var/tmp/portage/sys-libs/glibc-2.5/work/glibc-2.5/sunrpc'
make[1]: *** [sunrpc/others] Error 2
make[1]: Leaving directory `/var/tmp/portage/sys-libs/glibc-2.5/work/glibc-2.5'
make: *** [all] Error 2

!!! ERROR: sys-libs/glibc-2.5 failed.
Call stack:
ebuild.sh, line 1614:   Called dyn_compile
ebuild.sh, line 971:   Called qa_call 'src_compile'
environment, line 4085:   Called src_compile
glibc-2.5.ebuild, line 1121:   Called toolchain-glibc_src_compile
glibc-2.5.ebuild, line 235:   Called die

!!! make for default failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/sys-libs/glibc-2.5/temp/build.log'.

0 件のコメント: