问题链接到libcuda.so(Problems Linking to libcuda.so)

2019-09-16 22:48发布

我对什么似乎是应该很容易地诊断和解决问题难住了。 我有一个C ++源文件,使使用CUDA驱动程序API的。 当我使用编译nvcc ,可执行产生,没有问题的作品。 然而,当我尝试使用编译它g++ ,链接器抱怨是到符号的未定义引用/usr/lib/libcuda.so

 undefined reference to cuDeviceGet' ... undefined reference to cuDeviceComputeCapability' ... undefined reference to cuDeviceGetName' ... undefined reference to cuDeviceTotalMem_v2' ... undefined reference to cuDeviceGetAttribute' ... undefined reference to cuDeviceGetAttribute' ... undefined reference to cuDeviceGetAttribute' ... undefined reference to cuDeviceGetAttribute' 

我试图确保/usr/lib包含在库路径(通过提供标志-L/usr/lib-lcuda ,并添加/usr/lib$LIBRARY_PATH )。 然而,问题依然存在。 我相信, /usr/lib/libcuda.so包含该接头用抱怨的符号:

 $ nm -D /usr/lib/libcuda.so | grep cuDeviceGet 00000000000be410 T cuDeviceGet 00000000000bf120 T cuDeviceGetAttribute 00000000000d2e10 T cuDeviceGetByPCIBusId 00000000000be200 T cuDeviceGetCount 00000000000bdfa0 T cuDeviceGetName 00000000000d2bb0 T cuDeviceGetPCIBusId 00000000000bf380 T cuDeviceGetProperties 
我觉得奇怪, nvcc成功编译的文件,但g++没有。 你有什么想法,我怎么能解决这个问题?

非常感谢您的帮助!

Answer 1:

好吧,我是不是能够对文件进行编译的原因是因为-lcuda标志有来在文件名 。 否则,将无法正常工作......与编译器告诉我这个信息大,显着的警告会被大加赞赏。 嗯,这是两个小时的浪费。



文章来源: Problems Linking to libcuda.so