链接到libcuda.so的问题

时间:2012-05-01 18:23:13

标签: gcc linker cuda g++ shared-libraries

我很难被看似容易诊断和修复的问题所困扰。我有一个使用CUDA驱动程序API的C ++源文件。当我使用nvcc编译它时,生成可执行文件并且没有问题。但是,当我尝试使用g++编译它时,链接器会抱怨对/usr/lib/libcuda.so中的符号的未定义引用:

undefined reference to cuDeviceGet'
... undefined reference tocuDeviceComputeCapability'
... undefined reference to cuDeviceGetName'
... undefined reference tocuDeviceTotalMem_v2'
... undefined reference to cuDeviceGetAttribute'
... undefined reference tocuDeviceGetAttribute'
... undefined reference to cuDeviceGetAttribute'
... undefined reference tocuDeviceGetAttribute'

我尝试确保cuDeviceGet' ... undefined reference to包含在库路径中(通过提供标记cuDeviceGetName' ... undefined reference tocuDeviceGetAttribute' ... undefined reference to,并将cuDeviceGetAttribute' ... undefined reference to添加到/usr/lib) 。但是,问题仍然存在。我确信-L/usr/lib包含链接器抱怨的符号:

-lcuda
我发现/usr/lib成功编译文件很奇怪,但$LIBRARY_PATH却没有。你对我如何解决这个问题有任何想法吗?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

好的,我无法编译文件的原因是因为-lcuda标志必须在文件名之后。否则,它将无法工作......编辑告诉我这些信息会受到很多赞赏,这是一个大而突出的警告。好吧,这浪费了两个小时。