2011-11-14 132 views
26

我想通过命令提示符编译在Windows 7 CUDA测试程序, 我是这个命令:错误从命令编译CUDA提示

nvcc test.cu 

但我得到的是这样的错误:

nvcc fatal : Cannot find compiler 'cl.exe' in PATH 

什么可能导致此错误?

+0

如果在解决此问题后出现另一个错误“无法找到corecrt.h”,请查看https://stackoverflow.com/questions/38290169/cannot-find-corecrt-h- universalcrt-includepath-is-wrong –

回答

27

您需要包含“cl.exe时”文件的文件夹添加到PATH环境变量。例如:

C:\Program Files\Microsoft Visual Studio 10.0\VC\bin 

编辑:好了,打开我的电脑 - >属性 - >高级系统设置 - >环境变量。这里查找列表中的“PATH”,并添加上面的路径(或者cl.exe的位置)。

+0

好的,但我该如何添加它?我习惯在linux上工作,所以我现在还没有用到windows的方式...... – Imperian

+0

好,但现在我又得到另一个错误: 'nvcc致命错误:Visual Studio配置文件'(null)'无法在'C:\ Program Files文件(x86)\ Microsoft Visual Studio 9.0 \ VC \ bin \...'中找到安装程序'' – Imperian

+1

没关系,我只是将--machine 32作为参数传递给nvcc – Imperian

3

cl.exe是微软的C/C++编译器。所以问题是你没有安装在命令行可以找到它的地方。

1

nvcc只是CUDA特定部分程序的前端。它必须调用一个完整的编译器来完成这项工作。在这种情况下,它无法找到在Visual Studio编译器“cl.exe时”

检查路径,NVCC文档等

0

我看到这是一个老问题,但是当我尝试构建我的CUDA项目时,最近在Visual Studio 2012中出现了此错误。很明显,我已将CUDA项目更改为2012年11月的版本,将其更改回v110,通常默认情况下会修复此错误。

在Visual Studio中,左键单击CUDA项目 - >属性 - >配置属性 - >常规 - >平台工具集,然后选择:Visual Studio 2012(v110)。

我大概可以将它与2012年11月的包一起使用,但CUDA代码不使用该包的任何附加功能,因此没有必要。 (这包包含可变参数模板的C++ 11)

10

加入这个选项解决这个问题NVCC

nvcc x.cu ... -ccbin "D:\Program Files\Microsoft Visual Studio 11.0\VC\bin" 

例如我的编译器是VS2012。和cl.exe是在这个目录中

+0

你能澄清你的意思吗?“编辑此问题”? – skrrgwasme

+0

抱歉,我应该写解决不编辑:D对不起我的英语。 –

+0

将'\ VC \ bin \'文件夹添加到PATH环境变量中对我来说不起作用(Win7)。然而,你的解决方案工作得很好!我正在尝试为MATLAB编译一些代码。谢谢! –