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'
...

回答(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 个评论

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.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Get Started with GPU Coder 的更多信息

产品

版本

R2023b

标签

提问:

2024-2-3

评论:

2024-2-6

Community Treasure Hunt

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

Start Hunting!

Translated by