ссылка на общую библиотеку cuda: неопределенная ссылка на cudaRegisterLinkedBinary

Цель:

создайте разделяемую библиотеку, содержащую мои ядра CUDA, которая имеет оболочку / заголовок без CUDA.создатьtest исполняемый файл для общей библиотеки.

проблема

общая библиотекаMYLIB.so похоже компилируется нормально. (нет проблем).Ошибка в связывании:

./libMYLIB.so: undefined reference to __cudaRegisterLinkedBinary_39_tmpxft_000018cf_00000000_6_MYLIB_cpp1_ii_74c599a1

упрощенный make-файл:

libMYlib.so :  MYLIB.o
    g++  -shared  -Wl,-soname,libMYLIB.so  -o libMYLIB.so    MYLIB.o  -L/the/cuda/lib/dir  -lcudart


MYLIB.o : MYLIB.cu   MYLIB.h
    nvcc  -m64   -arch=sm_20 -dc  -Xcompiler '-fPIC'  MYLIB.cu  -o  MYLIB.o  -L/the/cuda/lib/dir  -lcudart


test : test.cpp  libMYlib.so
        g++   test.cpp  -o test  -L.  -ldl -Wl,-rpath,.   -lMYLIB  -L/the/cuda/lib/dir  -lcudart

в самом деле

nm libMYLIB.so показывает, чтовсе CUDA API функции "неопределенные символы ":

         U __cudaRegisterFunction
         U __cudaRegisterLinkedBinary_39_tmpxft_0000598c_00000000_6_CUPA_cpp1_ii_74c599a1
         U cudaEventRecord
         U cudaFree
         U cudaGetDevice
         U cudaGetDeviceProperties
         U cudaGetErrorString
         U cudaLaunch
         U cudaMalloc
         U cudaMemcpy

Таким образом, CUDA как-то не связался с общей библиотекой MYLIB.so Чего мне не хватает?

CUDA даже не связывался с объектным файлом как-то:

nm MYLIB.o

         U __cudaRegisterFunction
         U __cudaRegisterLinkedBinary_39_tmpxft_0000598c_00000000_6_CUPA_cpp1_ii_74c599a1
         U cudaEventRecord
         U cudaFree
         U cudaGetDevice
         U cudaGetDeviceProperties
         U cudaGetErrorString
         U cudaLaunch
         U cudaMalloc
         U cudaMemcpy

(так же, как и выше)

Ответы на вопрос(3)

Ваш ответ на вопрос