如何从源代码编译 gcc-5?

如何从源代码编译 gcc-5?

看起来 gcc-5 最近已从 Debian 的不稳定存储库中删除。我需要 gcc-5 来编译较旧的 Linux 内核(3.19),因此我希望从源代码构建它,但这给我带来了很大的麻烦。我一直按照找到的说明进行操作这里,但我发现自己想知道我需要设置哪些设置等等。到目前为止,我已经做了以下工作。

  1. 下载并解压源代码。
  2. 通过执行以下操作配置 gcc-5:
% mkdir objdir
% cd objdir
% ../gcc-5.4.0/configure (I included neither options nor target flags)
  1. 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为,其中,等。ucontext_tlibgcc/config/<arch>/linux-unwind.h<arch>i386aarch64alpha

有一个类似的关于 stackoverflow 的问题

除了这些修复之外,我还需要对来自的消毒剂代码进行修复这里(其中一些就足够了)并且这里

之后海湾合作委员会终于建成了。

相关内容