shared library creation and undefined reference to cudaRegisterLinkedBinary

Goal:

  1. create a shared library containing my CUDA kernels that has a CUDA-free wrapper/header.
  2. create a test executable for the shared library.

Problem

  1. shared library MYLIB.so seems to compile fine. (no problem).
  2. Error in linking:
./libMYLIB.so: undefined reference to __cudaRegisterLinkedBinary_39_tmpxft_000018cf_00000000_6_MYLIB_cpp1_ii_74c599a1

simplified makefile:

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
1 Like