Arch:GCCのインストール中にtoplev.oのコンパイルに失敗しました。

Arch:GCCのインストール中にtoplev.oのコンパイルに失敗しました。

現在、AURを使用してgcc41をインストールしようとして問題が発生しました。

コンパイルプロセスが実行されるたびにオーバーライドエラーが発生し、toplevオブジェクトのコンパイルを完了できず、ビルドが失敗します。

これは間違っています。ここでどこに行くべきかは本当にわかりません。

In file included from ../../gcc/toplev.c:31:0:
../../gcc/gcov-io.h: In function ‘gcov_position’:
../../gcc/system.h:575:55: warning: ISO C does not support ‘__FUNCTION__’ predefined identifier [-Wpedantic]
((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))
                                                   ^
../../gcc/gcov-io.h:572:3: note: in expansion of macro ‘gcc_assert’
   gcc_assert (gcov_var.mode > 0);
   ^
../../gcc/toplev.c: At top level:
../../gcc/toplev.c:524:1: error: redefinition of ‘floor_log2’
 floor_log2 (unsigned HOST_WIDE_INT x)
 ^
In file included from ../../gcc/toplev.c:59:0:
../../gcc/toplev.h:175:1: note: previous definition of ‘floor_log2’ was here
 floor_log2 (unsigned HOST_WIDE_INT x)
 ^
../../gcc/toplev.c:559:1: error: redefinition of ‘exact_log2’
 exact_log2 (unsigned HOST_WIDE_INT x)
 ^
In file included from ../../gcc/toplev.c:59:0:
../../gcc/toplev.h:181:1: note: previous definition of ‘exact_log2’ was here
 exact_log2 (unsigned HOST_WIDE_INT x)
 ^
Makefile:2064: recipe for target 'toplev.o' failed
make[2]: *** [toplev.o] Error 1
make[2]: Leaving directory '/tmp/yaourt-tmp-michael/aur-gcc41/src/gcc-4.1.2/build/gcc'
Makefile:3907: recipe for target 'all-gcc' failed
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory '/tmp/yaourt-tmp-michael/aur-gcc41/src/gcc-4.1.2/build'
Makefile:617: recipe for target 'all' failed
make: *** [all] Error 2

答え1

gcc 4.4.7また、最新バージョンをインストールしてみましたgcc。私はあなたと同じエラーを見ました。 ~によるとこのバグレポート問題は、-fno-gn89-inline新しいバージョンでインライン関数を処理するための基本フラグとなるフラグで発生します。gcc現在gcc 4.3のデフォルト値はです。したがって、コンパイル時にフラグを設定する-fgnu89-inlineだけです。-fgnu89-inline

私はこれを試しました

CFLAGS='-fgnu89-inline -g -O2' CXXFLAGS='-fgnu89-inline -g -O2' ./configure
make

しかし、まだ同じエラーが発生します。フラグが正しく渡されないようですが、よくわかりません。それから一般を試しました。

./configure

Makefile次の2行を変更しました。

CC = gcc
CXX = g++

到着

CC = gcc -fgnu89-inline
CXX = g++ -fgnu89-inline

これにより、エラーは表示されなくなります。

ただし、他のエラーが発生します。

@itemx must follow @item

これらの問題は最新バージョンが原因で発生するため、texinfo以前のバージョンを使用できますtexinfo。たぶん手動で修正することができます。ケースに試してみましたが、私が何をしているのか分からなかったので、その道をたどりませんでした。

簡単に言えば、仮想マシンやドッカーイメージを実行する方が良いと思います。

答え2

私は以前も同様のことを経験したことがあります。問題は、GCC 5.2.0-1(最新のアーチバージョン)を使用してAURでgcc41をコンパイルしようとしていることです。リリースが続くにつれて、GCCに新しいバグが追加されるため、古いバージョンのGCCソースコードは、最新バージョンのGCCで常に有効と見なされるわけではありません。この警告を無効にする方法が見つかった場合は、成功する可能性があります。 Archウェイバックマシンを使用してgcc 4.2バイナリを取得できる場合は、gcc 4.2ソースコードをバイナリ形式でコンパイルできます。

関連情報