2011-11-14 168 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編譯一些代碼。謝謝! –