未定义的引用错误CUDA,GPUJPEG库

时间:2013-01-08 22:30:59

标签: linker cuda shared-libraries

我已成功安装此库。我的代码编译没有问题,但我收到此错误,我相信在链接期间:

suvamsh@vai:~/gpujpeg-lib/src$ nvcc test.cu
/tmp/tmpxft_00002869_00000000-13_test.o: In function 'encoder()':
tmpxft_00002869_00000000-1_test.cudafe1.cpp:(.text+0x23d): undefined reference to `gpujpeg_set_default_parameters(gpujpeg_parameters*)'
collect2: ld returned 1 exit status

我甚至将$ LD_LIBRARY_PATH设置为库.so文件的位置。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如@talonmies所示,

  

如果库位于“非标准”位置,则必须向编译器显式指定库并提供安装它的路径。

尝试以下命令

$ nvcc test.cu -o test -L"path/to/GPUJPEGLibrary" -l"name_of_GPUJPEGLibrary"

请注意,如果.so文件的名称是libxyz.so,则“name_of_GPUJPEGLibrary”应为“xyz”。

例如,如果你的.so文件是/usr/local/lib/libgpujpeg.so,cmdline应该是

$ nvcc test.cu -o test -L"/usr/local/lib" -l"gpujpeg"