使用 gcc8.1.1 编译 gcc6.4.0

Jia*_*hao 3 gcc makefile

我尝试在 Fedora28 中安装 gcc6.4.0,但出现以下错误。

In file included from ../.././libgcc/unwind-dw2.c:401:0:
./md-unwind-support.h: In function ‘x86_64_fallback_frame_state’:
./md-unwind-support.h:65:47: error: dereferencing pointer to incomplete type ‘struct ucontex_t’
       sc = (struct sigcontext *) (void *) &uc_->uc_mcontext;
                                               ^~
Run Code Online (Sandbox Code Playgroud)

最后,消息在这里:

make[3]: *** [../.././libgcc/shared-object.mk:14: unwind-dw2.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/rx/program/gcc-6.4.0/x86_64-pc-linux-gnu/libgcc'
make[2]: *** [Makefile:17378: all-stage1-target-libgcc] Error 2
make[2]: Leaving directory '/home/rx/program/gcc-6.4.0'
make[1]: *** [Makefile:23677: stage1-bubble] Error 2
make[1]: Leaving directory '/home/rx/program/gcc-6.4.0'
make: *** [Makefile:914: all] Error 2
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以前的解决方案,但它仍然失败。

我错过了什么吗?谢谢!

Jon*_*ely 5

这是由于最近版本的 glibc 发生了变化,需要对 GCC 源进行更改。GCC 6.4.0 是在这些更改发生之前发布的,因此您需要自己修补代码。需要的修复是 https://gcc.gnu.org/viewcvs/gcc/trunk/libgcc/config/i386/linux-unwind.h?r1=249731&r2=249730&pathrev=249731

我已经尝试了以前的解决方案,但它仍然失败。

那是不可能的。您确定您在那里进行建议的两项更改,而不仅仅是在第 61 行?

  • gcc.gnu.org 服务器刚刚被替换,一些链接还无法工作。该提交也可见为 https://gcc.gnu.org/g:883312dc79806f513275b72502231c751c14ff72 (2认同)