问题导入
使用 CUDA nvcc 编译时报出了
#error – unsupported GNU version! gcc versions later than 6 are not supported!
这样的错误,是因为 gcc 版本太高,不兼容。查看一下自己的 gcc 版本:
$ gcc –version gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
值得注意的是,我使用的 CUDA 版本是 9.1 ,此时不支持版本号大于 6 的 gcc ,而我在网上发现似乎 CUDA 版本 8 不支持版本号大于 5 的 gcc 。所以应当以编译时 nvcc 的具体报错信息为准,以确定要降下的 gcc 版本。
问题解决方法
首先下载安装老版本的 gcc:
$ sudo apt install gcc-5
查看安装是否成功,并确定可执行程序名:
ls /usr/bin/gcc* /usr/bin/gcc
/usr/bin/gcc-5
/usr/bin/gcc-6
/usr/bin/gcc-7
我们找到了 /usr/bin/gcc-5 ,当然本来安装的 gcc-7 仍然存在。然后设置 gcc 默认版本:
$ sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-5 100 update-alternatives: 使用 /usr/bin/gcc-5 来在自动模式中提供 /usr/bin/gcc (gcc)
命令最后的数字是优先级,100最大,我们无所谓,就设置最大。接下来查看一下设置结果:
$ sudo update-alternatives –config gcc 链接组 gcc (提供 /usr/bin/gcc)中只有一个候选项:/usr/bin/gcc-5 无需配置。
最后,再查看一下 gcc 版本:
$ gcc -version gcc (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
同时 nvcc 的编译也可以通过了。
顺带一提,不需要这个设置时可以这样删除设置:
$ sudo update-alternatives –remove gcc /usr/bin/gcc-5
最后附上Github:https://github.com/gonearewe