制作Cuda-5.0 SDK(Ubuntu 64)时出错,未定义引用'dlsym'

时间:2012-11-24 05:37:12

标签: ubuntu cuda nvidia

The toolkit and items 1-6 of the NVIDIA_CUDA SDK have been installed and compiled , but when it gets to '6_Advanced/cdpLUDecomposition' the following error message appears.
  

  /usr/local/cuda-5.0/bin/nvcc -m64 -Xcompiler -fopenmp -gencode arch=compute_35,code=sm_35  -o cdpLUDecomposition dlaswp.o dgetf2.o dgetrf.o cdp_lu.o cdp_lu_main.o -L/usr/local/cuda-5.0/lib64 -lcublas -lcublas_device -lcudadevrt -lgomp 
/usr/local/cuda-5.0/lib64/libcublas.so: error: undefined reference to 'dlsym'
/usr/local/cuda-5.0/lib64/libcublas.so: error: undefined reference to 'dlopen'
/usr/local/cuda-5.0/lib64/libcublas.so: error: undefined reference to 'dlclose'
collect2: ld returned 1 exit status
make[1]: *** [cdpLUDecomposition] Error 1

我是Ubuntu和Cuda的新手,但确实尝试在make之前添加LD_FLAGS = -ldl,这没有帮助,并将PATH和LD_LIBRARY_PATH设置为Nvidia建议。我还更新了所有驱动程序,并且能够从SDK deviceQuery程序中获得有效的结果。

任何帮助都会受到赞赏,因为我尝试的其他任何东西都没有用。

1 个答案:

答案 0 :(得分:1)

添加-ldl就足够了。输入样本目录(cd 6_Advanced/cdpLUDecomposition)并使用make检查构建命令。在我的机器上它是

/usr/local/cuda-5.0/bin/nvcc -m64 -Xcompiler -fopenmp -gencode arch = compute_35,code = sm_35 -o cdpLUDecomposition dlaswp.o dgetf2.o dgetrf.o cdp_lu.o cdp_lu_main.o -L /usr/local/cuda-5.0/lib64 -lcublas -lcublas_device -lcudadevrt -lgomp

你可以

  • 手动附加-ldl
  • 运行构建命令
  • 通过将-ldl附加到正确的LDFLAGS(第89行)来修复目录中的Makefile,这对于下次重建更干净,更安全

ldd cdpLUDecomposition然后显示它链接到/lib/x86_64-linux-gnu/libdl.so.2。