首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从源头上编译gcc-5?

如何从源头上编译gcc-5?
EN

Unix & Linux用户
提问于 2020-02-09 20:24:31
回答 1查看 3.4K关注 0票数 3

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

  1. 下载并解压缩源代码。
  2. 通过执行以下操作配置gcc-5:
代码语言:javascript
复制
% mkdir objdir
% cd objdir
% ../gcc-5.4.0/configure (I included neither options nor target flags)
  1. 试图在我的objdir目录中使用以下内容进行构建:
代码语言:javascript
复制
% make BOOT_CFLAGS='-O' bootstrap

但是,引导会引发错误,使我无法进入安装程序。在运行约5分钟后,我会遇到以下错误:

代码语言:javascript
复制
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),并安装了必要的先决条件,如清单所示的这里

任何帮助或指导,无论是在修复错误,我在引导期间,或与建设,从源头,在一般情况下,将不胜感激!谢谢。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-06-18 16:37:35

原因是glibc发生了变化,这破坏了与旧编译器的兼容性。这些编译器存在一个补丁。该修补程序在struct ucontext文件中用ucontext_t替换了libgcc/config/<arch>/linux-unwind.h,其中<arch>i386aarch64alpha等。

有一个类似的关于堆栈溢出的问题

除了这些修复之外,我还需要为来自这里 (其中一些已经足够)和这里的消毒液代码应用修复。

在那之后,GCC终于建成了。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/566650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档