You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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,找到CCCXX的定义行,替换成:
    CC = gcc-5
    CXX = g++-5
    
  • 同时找到NVCCFLAGS配置项,添加-ccbin gcc-5参数,确保nvcc调用正确的编译器:
    NVCCFLAGS += -ccbin gcc-5
    
  • 先执行make clean清理之前的编译残留,再重新执行make

内容的提问来源于stack exchange,提问作者Hana90

火山引擎 最新活动