由于c ++ 11错误,无法构建GCC

rah*_*210 9 c++ g++ build

我需要一个旧版本的GCC来安装CUDA工具包,因为CUDA工具包不支持比5.3.1更新的GCC,而我试图在它上面安装它的Fedora机器是用GCC 6.我没有太多的控制权.机器,所以我不得不求助于自己建造GCC.我遵循的步骤是:

$ cd gcc-5.3.0
$ contrib/download_prerequisites
$ cd ../build
$ ../gcc-5.3.0/configure --prefix=$HOME/local/gcc-5.3.0 --program-suffix=5.3 --enable-shared --enable-multiarch --enable-threads=posix --enable-languages=c,c++,fortran --enable-checking=release --with-tune=generic
$ make
Run Code Online (Sandbox Code Playgroud)

这导致成功configure,但make失败并出现错误:

cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attribute
Run Code Online (Sandbox Code Playgroud)

还有一大堆其他C++ 11警告.一些谷歌搜索后,我想,这不得不做与建设GCC 5或以上的GCC 6.我想这可能帮助,如果我能强制编译器按照C++ 98来代替.所以,我尝试过:

$ export CXXFLAGS="-std=gnu++98"
$ ../gcc-5.3.0/configure ...
$ make
Run Code Online (Sandbox Code Playgroud)

没工作.我仍然继续得到相同的C++ 11警告,构建失败并出现完全相同的错误.然后,我试过:

$ ../gcc-5.3.0/configure CXXFLAGS="-std=gnu++98" ...
$ make
Run Code Online (Sandbox Code Playgroud)

同样,同样的错误.这次我偷看了Makefile,它肯定已经CXXFLAGS到了-std=gnu++98这里.此外,我也尝试构建GCC 4.9.3,看看这是否是与特定版本相关的问题,但我又遇到了同样的错误.

我不知道如何进一步.任何帮助深表感谢.谢谢.

rah*_*210 14

如果其他人有这个问题,显然它是由这个补丁修复的.如果您建议的更改(这将是太冗长在这里提及,但足够简单,做手工)至GCC源文件,然后configuremake成功,而不需要通过工作-std方案.我使用GCC 6.2.1成功构建了GCC 5.3.0,并对源文件进行了这些更改.