我对什么似乎是应该很容易地诊断和解决问题难住了。 我有一个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++
没有。 你有什么想法,我怎么能解决这个问题?
非常感谢您的帮助!