我正在尝试在 Archlinux 中使用 gcc 7.2 独立编译 gcc 6.4.0。
配置如下:
../configure --prefix=${INSTALL_PREFIX} --enable-languages=c,c++,fortran \
--enable-threads=posix --enable-tls --enable-libgomp --enable-lto \
--enable-shared --enable-static --disable-nls --disable-multilib \
--with-fpmath=sse
编译时,我在
md-unwind-support.h
中得到以下错误:
md-unwind-support.h:65:47: error: dereferencing pointer to incomplete type 'struct ucontext'
我比较过
md-unwind-support.h
在 gcc 6.4.0 和 gcc 7.2.0 中定义之间,发现
struct ucontext
定义为
ucontext_t
在 gcc 7.2.0 中。
所以,我在
md-unwind-support.h
做了一些改动gcc 6.4.0 源代码树,但遇到了一些命名空间问题,如下所示:
int std::uncaught_exceptions() should have been declared inside 'std'
我被卡住了,不知道这个问题。
任何帮助和建议都会有所帮助。
请您参考如下方法:
为了拥有make
要工作,您必须修改文件 make_folder/libgcc/config/i386/linux_unwind.h
哪里make_folder
是您在其中键入 make
的文件夹命令。
在 linux_unwind.h
你要改struct ucontext *uc_ = context->cfa;
在线61至struct ucontext_t *uc_ = context->cfa;
感谢 Seong这告诉我们要修改什么文件。