在Ubuntu 14.04中编译GCC 3.4.6时出错
我试图在Ubuntu 14.04 x64中编译GCC 3.4.6。它已经有了更新版本的GCC-4.8.2 我运行了在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
/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编译以查看预处理的源代码并仔细查找定义—您将看到缺少的定义。