Ubuntu17.10编译Faster R-CNN遇CUDA8不支持高版本GCC错误求助
解决CUDA8与高版本GCC不兼容导致Faster R-CNN lib编译失败的问题
我一眼就看穿问题所在了——CUDA 8.0对GCC版本的上限要求是5.x,但Ubuntu 17.10默认搭载的GCC版本肯定高于这个阈值,所以nvcc在编译时触发了host_config.h里的版本检查报错。下面给你几个靠谱的解决办法,按推荐程度排序:
方法1:安装兼容的GCC/G++版本并临时切换(最稳妥)
这个方案不会破坏系统默认的编译器配置,只是在编译Faster R-CNN时临时用低版本编译器:
- 先安装gcc-5和g++-5:
sudo apt-get install gcc-5 g++-5 - 进入Faster R-CNN的
lib文件夹前,设置临时环境变量指定编译器:export CC=gcc-5 export CXX=g++-5 - 然后正常执行构建命令:
make
方法2:修改CUDA的版本检查头文件(快速但不推荐)
如果你嫌安装编译器麻烦,可以手动注释掉CUDA的版本限制,但这可能会带来潜在的兼容性隐患,比如某些CUDA特性无法正常工作:
- 打开报错的头文件:
sudo nano /usr/local/cuda/include/host_config.h - 找到这一行报错代码:
#error -- unsupported GNU version! gcc versions later than 5 are not supported!
- 把它注释掉,改成:
// #error -- unsupported GNU version! gcc versions later than 5 are not supported! - 保存退出后,重新尝试构建
lib文件夹。
方法3:在Makefile中直接指定编译器
如果临时环境变量没生效,可以直接修改Faster R-CNNlib文件夹下的Makefile,强制指定编译器:
- 打开
lib/Makefile,找到CC和CXX的定义行,替换成:CC = gcc-5 CXX = g++-5 - 同时找到
NVCCFLAGS配置项,添加-ccbin gcc-5参数,确保nvcc调用正确的编译器:NVCCFLAGS += -ccbin gcc-5 - 先执行
make clean清理之前的编译残留,再重新执行make。
内容的提问来源于stack exchange,提问作者Hana90




