CUDA 版本 X 抱怨不支持 gcc 版本 Y - 怎么办?
CUDA version X complains about not supporting gcc version Y - what to do?
问题是关于版本的特定组合,但更普遍。
我刚刚从 Kubuntu 12.04 升级到 14.04。现在,当我想编译 CUDA 代码(使用 CUDA 6.5)时,我得到:
#error -- unsupported GNU version! gcc 4.9 and up are not supported!
我安装了 gcc-4.8(和 4.7),并尝试使用此处建议的 /usr/local/cuda/bin
符号链接解决方案:
CUDA incompatible with my gcc version
但这不起作用。我该怎么办?
切换回支持的配置。它们列在任何最新 CUDA 发行版的入门文档中。
对于您当前列出的特定配置,使用 CUDA 7 RC 可能会更好,它现在可供注册开发人员使用。
此解决方案与 CUDA 和 GCC 版本的多种组合有关。
您可以告诉 CUDA 的 nvcc
使用特定版本的 gcc。因此,假设您希望 gcc 4.7 与 CUDA 6 一起使用。您 运行:
sudo apt-get install gcc-4.7 g++-4.7
然后将以下开关添加到您的 nvcc
命令行:
nvcc --compiler-bindir /usr/bin/gcc-4.7 # rest of the command line here
如果您使用 CMake 进行构建,请在 CMakeLists.txt
寻找 CUDA 之前添加适当的设置,例如:
set(CUDA_HOST_COMPILER /usr/bin/gcc-4.7) # -> ADD THIS LINE <-
find_package(CUDA)
此外,clang 似乎也可以编译 CUDA,也许这值得一试(尽管您必须适当地构建它)。
注意:一些Linux(或其他OS)发行版没有针对多个版本的gcc(在同一版本的OS分布)。我建议不要尝试在旧版本上安装另一个发行版的软件包,而是考虑构建 gcc。这并不完全是微不足道的,但它是 quite doable - 当然,如果您没有对您的机器的 root 访问权限,这是您唯一的选择。
很多时候你会发现当你遇到这个问题的时候CUDA已经有newer releases了。例如,问题的原始提法是关于 CUDA 6 和 GCC 4.9; CUDA 7 支持 GCC 4.9。 CUDA 8 支持 GCC 5.x。等等。
我在 CUDA Toolkit 7.5 和 gcc 5.2.1 中遇到了类似的问题。
我确实修改了 /usr/local/cuda/include/
中的 host_config.h
文件:
只需删除检查 gcc 版本的行。它确实解决了我的问题。
Darren Garvey 致谢 (https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw)
问题是关于版本的特定组合,但更普遍。
我刚刚从 Kubuntu 12.04 升级到 14.04。现在,当我想编译 CUDA 代码(使用 CUDA 6.5)时,我得到:
#error -- unsupported GNU version! gcc 4.9 and up are not supported!
我安装了 gcc-4.8(和 4.7),并尝试使用此处建议的 /usr/local/cuda/bin
符号链接解决方案:
CUDA incompatible with my gcc version
但这不起作用。我该怎么办?
切换回支持的配置。它们列在任何最新 CUDA 发行版的入门文档中。
对于您当前列出的特定配置,使用 CUDA 7 RC 可能会更好,它现在可供注册开发人员使用。
此解决方案与 CUDA 和 GCC 版本的多种组合有关。
您可以告诉 CUDA 的 nvcc
使用特定版本的 gcc。因此,假设您希望 gcc 4.7 与 CUDA 6 一起使用。您 运行:
sudo apt-get install gcc-4.7 g++-4.7
然后将以下开关添加到您的 nvcc
命令行:
nvcc --compiler-bindir /usr/bin/gcc-4.7 # rest of the command line here
如果您使用 CMake 进行构建,请在 CMakeLists.txt
寻找 CUDA 之前添加适当的设置,例如:
set(CUDA_HOST_COMPILER /usr/bin/gcc-4.7) # -> ADD THIS LINE <-
find_package(CUDA)
此外,clang 似乎也可以编译 CUDA,也许这值得一试(尽管您必须适当地构建它)。
注意:一些Linux(或其他OS)发行版没有针对多个版本的gcc(在同一版本的OS分布)。我建议不要尝试在旧版本上安装另一个发行版的软件包,而是考虑构建 gcc。这并不完全是微不足道的,但它是 quite doable - 当然,如果您没有对您的机器的 root 访问权限,这是您唯一的选择。
很多时候你会发现当你遇到这个问题的时候CUDA已经有newer releases了。例如,问题的原始提法是关于 CUDA 6 和 GCC 4.9; CUDA 7 支持 GCC 4.9。 CUDA 8 支持 GCC 5.x。等等。
我在 CUDA Toolkit 7.5 和 gcc 5.2.1 中遇到了类似的问题。
我确实修改了 /usr/local/cuda/include/
中的 host_config.h
文件:
只需删除检查 gcc 版本的行。它确实解决了我的问题。
Darren Garvey 致谢 (https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw)