我想在Ubuntu 18.04上构建gcc的旧版本(<= 5.4.0),但是我一直遇到各种与POSIX标准更改有关的编译错误。我想构建许多版本,但是每个gcc版本都有与名称空间更改相关的不同问题。我目前正在使用gcc-7.3进行编译。
是否有一个较旧的gcc源(5.4、4.8等)的中央存储库,并带有补丁程序以允许它们在Ubuntu 18.04 / gcc-7.3上构建?另外,是否可以使用某些转换工具或编译参数来完全避免这些错误?
大多数错误与结构名称空间重新定义有关,据我了解,这与POSIX中的一些更改有关。我尝试编译gcc-5.4.0的一些示例:
在linux-unwind.h
中,带有here的补丁
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
sanitizer_stoptheworld_linux_libcdep.cc
中有来自here的补丁问题是我没有我需要的完整更改列表,而且gcc的每个版本似乎都需要自己修改。
我的gcc-5.4.0配置参数供参考:
../src/configure --prefix=/home/common/modules/gcc/5.4.0 --enable-languages=c,c++,fortran --disable-multilib --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --enable-checking=release