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

Ati*_*rag 3 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
Run Code Online (Sandbox Code Playgroud)

这是我的编译选项

–Xcompiler –fopenmp -I/usr/include/ImageMagick -G -g -O0
Run Code Online (Sandbox Code Playgroud)

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

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

Rob*_*lla 21

你在这里的破折号:

–Xcompiler –fopenmp
Run Code Online (Sandbox Code Playgroud)

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

-I/usr/include/ImageMagick
Run Code Online (Sandbox Code Playgroud)

例如.

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

这个破折号:

Run Code Online (Sandbox Code Playgroud)

是不正确的.

使用此破折号:

-
Run Code Online (Sandbox Code Playgroud)

代替.

  • 人眼怎么能发现这样的事情?!你做得很好! (7认同)