nvcc fatal:指定outputfile时,非链接阶段需要单个输入文件

时间:2013-05-13 17:51:25

标签: cuda compiler-errors nvcc nsight

我在使用Nsight Eclipse时遇到了这个问题。我刚刚安装了我的Cuda Toolkit 5.0,我有一个项目,它使用了几个C文件和一个Cuda文件。

我读到有时当您在Nsight中使用Cuda文件中的C文件时出现问题,因此我将所有文件更改为项目中的.cu和.cuh扩展名。同样地,它说有时问题来自于为具有黑色空格的文件设置路径,我确信不是这种情况。

尝试编译第一个文件Calcular.cu

时出现错误

这是编译输出

make all 
Building file: ../Calcular.cu
Invoking: NVCC Compiler
nvcc -I/usr/include/ImageMagick -G -g -O0 -gencode arch=compute_11,code=sm_11 -gencode arch=compute_12,code=sm_12 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -odir "" -M -o "Calcular.d" "../Calcular.cu"
nvcc –Xcompiler –fopenmp --compile -G -I/usr/include/ImageMagick -O0 -g -gencode arch=compute_11,code=compute_11 -gencode arch=compute_11,code=sm_11 -gencode arch=compute_12,code=compute_12 -gencode arch=compute_12,code=sm_12 -gencode arch=compute_13,code=compute_13 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=compute_20 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=compute_30 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=compute_35 -gencode arch=compute_35,code=sm_35  -x cu -o  "Calcular.o" "../Calcular.cu"
nvcc fatal   : A single input file is required for a non-link phase when an outputfile is specified
make: *** [Calcular.o] Error 255

这是我的编译选项

–Xcompiler –fopenmp -I/usr/include/ImageMagick -G -g -O0

编译不会在文件中出现其他错误。它需要编译的文件是Calcular.cu,Calcular.cuh,Preprocesamiento.cu,Preprocesamiento.cuh,Principal.cu,Principal.cuh。

有人知道如何解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:21)

你在这里的破折号:

–Xcompiler –fopenmp

不是正确的破折号。如果你仔细查看你的问题发布,你会发现它们的字符与之前的正确字符略有不同:

-I/usr/include/ImageMagick

例如。

您需要使用include开关前面使用的相同类型的短划线替换这些短划线。如果您手动输入了这些编译器选项,则需要修复这些字符。

这个破折号:

不正确。

使用此破折号:

-

代替。