10

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

我跑./configure --prefix=/usr/local/gcc-3.4make

我最终遇到了几个错误,我可以在搜索中找到解决方案。

错误 1

错误 2

最后我遇到了这个错误,我找不到任何解决方案。

../../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

有人知道如何解决吗?如果需要更多详细信息,请告诉我。

4

1 回答 1

19

这是关于 siginfo 和 siginfo_t 的老问题

您所需要的只是查看所有地方的 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 *tosiginfo_t *struct siginfoto siginfo_t,使其与最新的 POSIX 兼容。在每个 rt_sigframe 声明中,最常见的是两个这样的地方,包括您info的问题领域。

于 2014-10-15T06:19:44.303 回答