最近Debianの不安定なリポジトリからgcc-5が削除されたようです。古いLinuxカーネル(3.19)をコンパイルするにはgcc-5が必要なので、ソースからビルドしたいのですが、これは多くの問題を引き起こします。私が見つけた指示に従いました。ここところで、どのような設定をすべきか気になります。これまで私は次のことをしました。
- ソースコードをダウンロードして解凍します。
- 以下を実行してgcc-5を設定します。
% mkdir objdir
% cd objdir
% ../gcc-5.4.0/configure (I included neither options nor target flags)
objdir
私のディレクトリに次のようにビルドしようとしています。
% make BOOT_CFLAGS='-O' bootstrap
ところで、起動中にエラーが発生し、インストールを続行できませんでした。約5分ほど実行した後、次のエラーが発生しました。
In file included from ../../../../gcc-5.4.0/libgcc/unwind-dw2.c:401:0:
./md-unwind-support.h: In function 'x86_fallback_frame_state':
./md-unwind-support.h:141:18: error: field 'uc' has incomplete type
struct ucontext uc;
^
make[5]: *** [../../../../gcc-5.4.0/libgcc/shared-object.mk:14: unwind-dw2.o] Error 1
make[5]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [Makefile:1154: multi-do] Error 1
make[4]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [Makefile:119: multi-do] Error 2
make[3]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [Makefile:16510: all-stage1-target-libgcc] Error 2
make[2]: Leaving directory '/home/me/objdir'
make[1]: *** [Makefile:22461: stage1-bubble] Error 2
make[1]: Leaving directory '/home/me/objdir'
make: *** [Makefile:22798: bootstrap] Error 2
私はDebian 10(Buster)を実行しており、リストされている前提条件をインストールしました。ここ。
ブート中に発生するエラーを修正したり、一般的にソースからビルドするなど、ヘルプやガイドラインをお寄せいただきありがとうございます。ありがとうございます。
答え1
その理由は、glibcが変更され、以前のコンパイラとの互換性が損なわれたためです。ある修理するそのコンパイラの場合。パッチはファイル内struct ucontext
、whereなどに置き換えられます。ucontext_t
libgcc/config/<arch>/linux-unwind.h
<arch>
i386
aarch64
alpha
似たようなものがありますスタックオーバーフローに関する質問。
これらの修正に加えて、次のサニタイザコードも修正する必要があります。ここ(これらのいくつかは十分です)とここ。
その後、最終的にGCCが構築されました。