我需要一个旧版本的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,看看这是否是与特定版本相关的问题,但我又遇到了同样的错误.
我不知道如何进一步.任何帮助深表感谢.谢谢.