nvcc 在调试模式下编译失败:需要单个文件

Posted

技术标签:

【中文标题】nvcc 在调试模式下编译失败:需要单个文件【英文标题】:nvcc failed to compile in debug mode : Single file required 【发布时间】:2013-04-11 04:23:16 【问题描述】:

我在尝试使用 nvcc for cuda 编译我的程序时遇到问题。我使用 Visual Studio 2012 和 cuda 5.0。

当我以发布模式启动构建时,一切正常。

在调试模式下,我在编译第一个 .cu 文件时收到以下错误消息:

nvcc:致命错误:指定输出文件时,非链接阶段需要单个输入文件

对于发布模式,我的命令行是:

C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_13 ,code=\"sm_13,compute_13\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -I"C :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" --keep-dir "x64\Release" -maxrregcount=0 --ptxas-options=-v --machine 64 --compile -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MD " -o "x64\Release\Icem.cu. obj" "C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem\Icem.cu"

对于调试模式:

C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_13 ,code=\"sm_13,compute_13\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64" -I"C :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "x64\调试" -maxrregcount=0 --machine 64 --compile -g -D_CUDACC_ 1 -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " - o "x64\Debug\Icem.cu.obj" "C:\Users\Ernest\Documents\Matlab\icem\icem_cpp\cudaicem\Icem.cu"

你觉得第二个有什么问题吗?我没有看到多个输入文件!知道我可以测试什么吗?

【问题讨论】:

-D_CUDACC_ 1 不是因为这个吗?尝试不使用1。顺便说一句,你为什么需要这个?通常由nvcc 处理。 你搞定了,它在我的预处理器选项中,我不知道为什么要添加它,谢谢! 是的,使用gcc 阅读 Boost 错误是一种很好的训练,可以在混淆文本池中发现随机错误。很高兴我能帮忙:o) 【参考方案1】:

答案在预处理器选项中。 -D_CUDACC_ 1 是问题所在。

【讨论】:

以上是关于nvcc 在调试模式下编译失败:需要单个文件的主要内容,如果未能解决你的问题,请参考以下文章

在调试模式下编译时出现qrc_resource.cpp错误

FFmpeg之Linux下编译与调试

windows下编译调试nginx

vscodevscode在windows与ubuntu下编译调试C/C++

Firebase 消息传递仅在调试模式下工作,而不是在发布模式下工作 (iOS)

在linux下编译并以qemu user模式运行mips架构的文件