現在、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
私は前にこのようなものに遭遇しました。問題は、GCC 5.2.0-1(最新のArchバージョン)を使用してAURからgcc41をコンパイルしようとしていることだと思います。GCCはバージョンが進むにつれて新しいエラーを追加するため、古いバージョンのGCCのソースコードはそうではありません。 GCCの新しいバージョンでは常に有効と見なされます。この警告を無効にする方法を見つけることができれば、それでうまくいくかもしれません。 Archウェイバックマシンを使用してgcc4.2バイナリを取得できる場合は、gcc4.2ソースをそれ自体でバイナリ形式でコンパイルできます。
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
を使用することができます。手作業でも直せるかもしれませんが、1件試してみましたが、何をしているのかわからないので、この道をたどりませんでした。
簡単に言うと、仮想マシンまたはDockerイメージを実行する方が良いと思います。