在Ubuntu 14.04中编译GCC 3.4.6时出错

在Ubuntu 14.04中编译GCC 3.4.6时出错,ubuntu,gcc,gcc3,Ubuntu,Gcc,Gcc3,我试图在Ubuntu 14.04 x64中编译GCC 3.4.6。它已经有了更新版本的GCC-4.8.2 我运行了/configure--prefix=/usr/local/gcc-3.4和make 我最后犯了几个错误,我可以在搜索时找到解决方案 最后我陷入了这个错误,我找不到任何解决办法 ../../gcc/unwind-dw2.c: In function `uw_frame_state_for': ../../gcc/unwind-dw2.c:1031: error: field `i

我试图在Ubuntu 14.04 x64中编译GCC 3.4.6。它已经有了更新版本的GCC-4.8.2

我运行了
/configure--prefix=/usr/local/gcc-3.4
make

我最后犯了几个错误,我可以在搜索时找到解决方案

最后我陷入了这个错误,我找不到任何解决办法

../../gcc/unwind-dw2.c: In function `uw_frame_state_for':
../../gcc/unwind-dw2.c:1031: error: field `info' has incomplete type
make[2]: *** [libgcc/32/unwind-dw2.o] Error 1
make[2]: Leaving directory `/home/hp-11/Documents/gcc-3.4.6/build/gcc'
make[1]: *** [stmp-multilib] Error 2
make[1]: Leaving directory `/home/hp-11/Documents/gcc-3.4.6/build/gcc'
make: *** [all-gcc] Error 2

有人知道怎么修吗?如果需要更多详细信息,请告诉我。

这是关于siginfo和siginfo的老问题

您所需要的只是查看您的GCC源代码,如

struct rt_sigframe {            \
  int sig;              \
  struct siginfo *pinfo;          \
  void *puc;              \
  struct siginfo info;            \
  struct ucontext uc;           \
} *rt_ = (CONTEXT)->cfa;          \
sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext;   \
这个在gcc/config/i386/linux.h中,但是您的arch可能不同


并手动将
struct-siginfo*
替换为
siginfo\u t*
并将
struct-siginfo
替换为
siginfo\u t
,使其与最新的POSIX兼容。在每个rt_sigframe声明中,最常见的是两个这样的地方,包括问题的
info
字段。

要编译gcc的旧版本,通常需要执行较小的步骤:使用gcc-4.8编译gcc-4.6,然后使用gcc-4.6编译gcc-4.3(我选择了随机数,我不知道哪一个工作),等。为什么你需要这样一个旧版本的GCC?需要安装HTK,HDecode,HTS等。谢谢。这个问题解决了(尽管我现在遇到了一个新问题)。不幸的是,我没有足够的代表投票支持你的答案:(我做了答案中提到的事情,但仍然收到相同的错误。我搜索了所有siginfo实例,并用siginfo_t替换它们。我还做了清理、删除和重新创建objdir(我正在其中构建gcc-3.4.6),但同样的错误。有什么建议吗?我有Ubuntu 15.04 i686。这个世界上没有魔法。如果你有“不完整类型”消息对于某些结构,您应该找出此结构中类型不完整的字段。在您的情况下,可能是ucontext左右。只需确定失败的编译行,然后使用-E编译以查看预处理的源代码并仔细查找定义—您将看到缺少的定义。