using cmake to build a cuda project which using opencv, a static lib(.a) generated by matlab gpu coder to jetson nano. My qustion is why it show undefined referenced to ..

I have give my CMAKE files and my build progress in error.txt
I want to deal the problem
tmpxft_00002e1f_00000000-5_img_to_3d.cudafe1.cpp:(.text+0x6b688): undefined reference to `cusolverDnDgesvd_bufferSize'
tmpxft_00002e1f_00000000-5_img_to_3d.cudafe1.cpp:(.text+0x6b720): undefined reference to `cusolverDnDgesvd'
tmpxft_00002e1f_00000000-5_img_to_3d.cudafe1.cpp:(.text+0x6bbd4): undefined reference to `cublasDdot_v2'
tmpxft_00002e1f_00000000-5_img_to_3d.cudafe1.cpp:(.text+0x6be1c): undefined reference to `cublasDdot_v2'
...

Answers (1)

Hi Hailing,
I think this is due to missing cublas and cusolver libraries from the install. can you check you have libcublas.so and libcusolver.so files in /usr/local/cuda/lib64 directory. CMakefile seem to have the right settings, but compiler/linker is not able to resolve the symbols.

4 Comments

I check the directory you give like you say, and find libcublas.so and libcusolver.so in there.
Can you try adding this to your CMakeLists.txt?
target_link_libraries(${PROJECT_NAME} cusolver, cublas)
CMake ${CUDA_LIBRARIES} does not contain cusolver and cublas.
I have add target_link_libraries(${PROJECT_NAME}
PUBLIC
cusolver
cublas
cublasLt
cusparse
) into cmakelists.txt file ,but still have same problem. whilc is commoned by nivda in NVIDIA/CUDALibrarySamples: CUDA Library Samples (github.com). And I chose disenable the two libs in gpu coder project like the img. But there still have a problem.
like:
/home/jetson/JETSON_CODE/MATLAB_ws/R2023b/E/file/CODE_WORK_SPACE/OPENCV/matlab_code/JETSON/jetson_main_img_3d_1_1/codegen/lib/img_to_3d/img_to_3d.a(img_to_3d_terminate.o): In function `__sti____cudaRegisterAll()':
tmpxft_000032ab_00000000-5_img_to_3d_terminate.cudafe1.cpp:(.text.startup+0x20): undefined reference to `__cudaRegisterLinkedBinary_54_tmpxft_000032ab_00000000_6_img_to_3d_terminate_cpp1_ii_22357f4f'...
I give it in error.txt. I also submit my new cmakelists.txt. I use jetson nano as my Operation platform. It supports cuda. The version of cmake is 3.28.1.
and thank you for your attention.

Sign in to comment.

Categories

Find more on Get Started with GPU Coder in Help Center and File Exchange

Products

Release

R2023b

Asked:

on 3 Feb 2024

Commented:

on 6 Feb 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!