2004年11月14日

[obu:03122] Re: bootstrap gcc-3.3.2 のコンパイルにおけるエラー

こんにちは、かいとです。
# 毎回スレッドが切れてしまい、すいません^^;

高木さんが [obu:03115] の投稿して頂いた内容とは別の手順で
gcc 3.4.2 のコンパイルが成功しました。
このコンパイルにおいて、高木さんに紹介して頂いた情報も
参考にさせて頂きました。ありがとうございます。

○手順
※binuitl のインストール、glibcのmake install-headersの

※実施については省略します。

作業用ディレクトリ : /usr/tmp/ppc-test/gcc-3.4.2-build
インストール先ディレクトリ: /usr/local/ppc-test

# cd /usr/local/ppc-test/powerpc-linux/include
# ln -s /usr/src/linux/include/asm .
# ln -s /usr/src/linux/include/linux .
# cd /usr/tmp/ppc-test/gcc-3.4.2-build
# ../gcc-3.4.2/configure --target=powerpc-linux --prefix=/usr/local/ppc-test --with-headers=/usr/local/ppc-test/powerpc-linux/include/ --disable-shared --disable-threads --enable-languages="c"
# vi ../gcc-3.4.2/gcc/unwind-dw2.c
 1022行目をコメントアウト
 
 編集前)
MD_FALLBACK_FRAME_STATE_FOR (context, fs, success);
 編集後)
// MD_FALLBACK_FRAME_STATE_FOR (context, fs, success);
# make all-gcc
# make install-gcc

○解説
・インストール先ディレクトリの include 以下で、Linux ヘッダへのリンクを
 作成しています。この作業がないと下記のようにエラーが生じます。

-----
/usr/local/ppc-test/powerpc-linux/include/bits/sigcontext.h:28:29: asm/sigcontext.h: No such file or  directory
In file included from ./tm.h:10,
from ../../gcc-3.4.2/gcc/libgcc2.c:43:
-----

・コンパイル時にヘッダファイルが見つからないといわれますが、
 取りあえず touch で指定ディレクトリで空ファイルを作成しました。

・コンパイルでどうしても下記エラーを解決するために該当箇所を
 コメントアウトしました。重要な部分であれば、ちょっと痛いですが。。。^^;

-----
/usr/tmp/ppc-test/gcc-3.4.2-build/gcc/xgcc -B/usr/tmp/ppc-test/gcc-3.4.2-build/gcc/ -B/usr/local/ppc-test/powerpc-linux/bin/ -B/usr/local/ppc-test/powerpc-linux/lib/ -isystem /usr/local/ppc-test/powerpc-linux/include -isystem /usr/local/ppc-test/powerpc-linux/sys-include -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc-3.4.2/gcc -I../../gcc-3.4.2/gcc/. -I../../gcc-3.4.2/gcc/../include -fPIC -mstrict-align -fexceptions -c ../../gcc-3.4.2/gcc/unwind-dw2.c -o libgcc/./unwind-dw2.o
../../gcc-3.4.2/gcc/unwind-dw2.c: In function `uw_frame_state_for':
../../gcc-3.4.2/gcc/unwind-dw2.c:1022: error: structure has no member named `regs'
../../gcc-3.4.2/gcc/unwind-dw2.c:1022: error: structure has no member named `regs'
../../gcc-3.4.2/gcc/unwind-dw2.c:1022: error: structure has no member named `regs'
../../gcc-3.4.2/gcc/unwind-dw2.c:1022: error: structure has no member named `regs'
make[2]: *** [libgcc/./unwind-dw2.o] Error 1
-----

高木さんが前回の投稿で指摘して頂いた点を configure 時に実行しました。

>・newlibはいらないのかも。
>
>・--disable-shared --disable-threadsは付けてみたが、必須なのか不明。
>
>・make、make installとすべきか、make all-gcc、make install-gccと
> すべきか不明。とりあえず後者で。


以上で、なんとか bootstrap gcc のコンパイルはうまくいきました。
ご協力頂いた高木さん、ありがとうございました。

が、次に glibc のコンパイル時にエラーが発生してしまいました;;

# cd ../glibc-2.3.3
# TARGET=powerpc-linux
# CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib ../glibc-2.3.3/configure --prefix=/usr/local/ppc-test/powerpc-linux --enable-add-ons=linuxthreads --with-headers=/usr/local/ppc-test/powerpc-linux/include/ --host=i386-linux --build=powerpc-linux --disable-shared --disable-sanity-checks --disable-profile
# make

<エラー内容>
-------------------
powerpc-linux-gcc ../sysdeps/unix/sysv/linux/init-first.c -c -std=gnu99 -O2 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -g -mpreferred-stack-boundary=4 -I../include -I. -I/usr/tmp/ppc-test/glibc-2.3.3-rebiuld/csu -I.. -I../libio -I/usr/tmp/ppc-test/glibc-2.3.3-rebiuld -I../sysdeps/i386/elf -I../linuxthreads/sysdeps/unix/sysv/linux/i386 -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/i386 -I../sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv/i386 -I../sysdeps/unix/sysv -I../sysdeps/unix/i386 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/i386/fpu -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /usr/local/ppc-test/lib/gcc/powerpc-linux/3.4.2/include -isystem /usr/local/ppc-test/powerpc-linux/include/ -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DHAVE_INITFINI -o /usr/tmp/ppc-test/glibc-2.3.3-rebiuld/csu/init-first.o -MD -MP -MF /usr/tmp/ppc-test/glibc-2.3.3-rebiuld/csu/init-first.o.dt
cc1: error: invalid option `preferred-stack-boundary=4'
make[2]: *** [/usr/tmp/ppc-test/glibc-2.3.3-rebiuld/csu/init-first.o] Error 1
-------------------

コンパイル時の -mpreferred-stack-boundary=4 が適切じゃないと言われ
powerpc-gcc が怒ってるようにとれますが、この preferred-stack-boundary は
gcc のオプションとして存在するようです。
# 下記サイトを見る限りでは、組み込み用途時に付加されるようですね。

http://d.hatena.ne.jp/yupo5656/searchdiary?word=%2a%5bsecurity%5d

congfigure 時の host, build 指定があやしい気もしますが、
powerpc 用のライブラリなので、build が powerpc で問題ないように思います。


ちょっと長文となってしまい、申し訳ないです。
何か情報お持ちの方、ご教授頂ければ幸いです。

投稿者 xml-rpc : 2004年11月14日 05:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/9099
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。