为什么在这个libcufft_static示例中出现"undefined reference to `__cudaRegisterLinkedBinary_60_....`"错误?

Why am I getting "undefined reference to `__cudaRegisterLinkedBinary_60_....`" errors in this libcufft_static example?

本文关键字:to undefined reference 错误 cudaRegisterLinkedBinary libcufft static 为什么      更新时间:2023-10-16

我在Ubuntu 16.04上使用CUDA 7.5 SDK,通过nvidia-cuda-toolkit包安装。我正在尝试使用cuFFT的回调功能编译一个简单的测试程序;这个例子的源代码可以在GitHub上找到。

按照使用回调特性编译的说明,我将源代码编译为可重定位的设备代码并链接到libcufft_static.a:

nvcc -ccbin g++ -dc -m64 -o cufft_callbacks.o -c cufft_callbacks.cu
nvcc -ccbin g++ -m64 -o cufft_callbacks cufft_callbacks.o  -lcufft_static -lculibos

在上面的序列中,最后一个命令失败并出现一系列错误,这些错误都类似于下面的:

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libcufft_static.a(set_callback.o): In function `__sti____cudaRegisterAll_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d()':
tmpxft_00003a6a_00000000-4_set_callback.cudafe1.cpp:(.text+0x6fd): undefined reference to `__cudaRegisterLinkedBinary_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d'

它抱怨许多缺失的符号,都以__cudaRegisterLinkedBinary_开头。我不认为我做错了什么,因为相同的命令序列在我手头的CentOS 7机器上正常工作。

是否有可能我的SDK配置错误?我在SO和其他地方看到的所有提到的类似问题都是未能执行上述单独的编译步骤;我不认为这里是这样的

我能够通过升级到CUDA 8.0 RC解决这个问题,@RobertCrovella在上面的评论中建议。

相关文章: