2013-05-13 3 views
0

Я написал файл makefile, который компилирует несколько файлов, а затем связывает их вместе. это выход из моего файла:Ошибки связывания CUDA с g ++

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 LIB и lib64 к LD_LIBRARY_PATH. и добавил -lcuda и -lcudart в команду. Я не понимаю, почему он все еще генерирует ошибку. это мой LD_LIBRARY_PATH:

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

ответ

3

LD_LIBRARY_PATH не имеет ничего общего с компиляции и компоновки. Это для runtime направление пути для загрузки динамических библиотек.

Вы должны добавить следующий параметр (или нечто подобное), чтобы сказать g++ где найти заголовочные файлы CUDA:

-I/usr/local/cuda/include 
Смежные вопросы