Gcc CUDA链接错误与g++;

Gcc CUDA链接错误与g++;,gcc,cuda,g++,Gcc,Cuda,G++,我编写了一个makefile,它编译多个文件,然后将它们链接在一起。这是我的文件的输出: g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \ ../src/lib/Decomp/NT_FFT_Decomp.cpp -std=c++0x -o NT_FFT_De

我编写了一个makefile,它编译多个文件,然后将它们链接在一起。这是我的文件的输出:

g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Decomp/NT_FFT_Decomp.cpp -std=c++0x -o NT_FFT_Decomp.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Decomp/T_FFT_Decomp.cpp -std=c++0x -lpthread -o T_FFT_Decomp.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Comp/SNT_FFT_Comp.cpp -std=c++0x -o SNT_FFT_Comp.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Comp/ST_FFT_Comp.cpp -std=c++0x -lpthread -o ST_FFT_Comp.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Comp/VNT_FFT_Comp.cpp -std=c++0x -o VNT_FFT_Comp.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Comp/VT_FFT_Comp.cpp -std=c++0x -lpthread -o VT_FFT_Comp.o
nvcc -c -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Comp/CUDA_FFT_Comp.cu -o CUDA_FFT_Comp.o
ptxas /tmp/tmpxft_00001e2d_00000000-5_CUDA_FFT_Comp.ptx, line 93; warning : Double is not supported. Demoting to float
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/lib/Globals.cpp -std=c++0x -o Globals.o
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D SIZE=32 -D THREAD_NUM=4 -D CUDA \
    ../src/main.cpp -std=c++0x -lpthread -o main.o
In file included from ../src/inlcude/FFT.h:12:0,
                 from ../src/main.cpp:3:
../src/inlcude/Comp/CUDA_FFT_Comp.h:14:19: fatal error: cuda.h: No such file or directory
compilation terminated.
make: *** [main.o] Error 1
我已经将cuda库和lib64添加到LD_LIBRARY_路径。并将-lcuda和-lcudart添加到命令中。我不明白为什么它仍然生成错误。 这是我的LD_库路径:

SomePath:/media/wiso/Programs/Setups/CUDA/lib:/media/wiso/Programs/Setups/CUDA/lib64:somePath
这是生成错误的命令:

g++ $(Objects) -lcuda -lcudart -lpthread -o DevicesTest
如果这一行不是产生错误的原因,那么这也是前一行。 创建main.o:

g++ -c -Wall $(CodeDefined) $(UserDefined) $(Main) -std=c++0x -lpthread -o main.o

CodeDefined和UserDefined只是-U-D选项Main是Main.cpp文件的路径

LD_LIBRARY\U路径
与编译和链接无关。它是用于加载动态库的路径的运行时方向

您应该添加以下开关(或类似开关)来告诉
g++
在哪里可以找到cuda包含文件:

-I/usr/local/cuda/include

LD_LIBRARY_PATH
与编译和链接无关。它是用于加载动态库的路径的运行时方向

您应该添加以下开关(或类似开关)来告诉
g++
在哪里可以找到cuda包含文件:

-I/usr/local/cuda/include