我有一台配备 nVidia gt 520m 的华硕笔记本电脑,并考虑在 Ubuntu 11.10 上尝试一些 OpenCL 编程(第一次)。我安装了 nvidia-current-dev 包。因此,我在 /usr/lib/nvidia-current/ 文件夹中找到了 libOpenCL.so 等:
$razvan@...:~$ locate libOpenCL.so
/usr/lib/nvidia-current/libOpenCL.so
/usr/lib/nvidia-current/libOpenCL.so.1
/usr/lib/nvidia-current/libOpenCL.so.1.0
/usr/lib/nvidia-current/libOpenCL.so.1.0.0
/usr/lib32/nvidia-current/libOpenCL.so
/usr/lib32/nvidia-current/libOpenCL.so.1
/usr/lib32/nvidia-current/libOpenCL.so.1.0
/usr/lib32/nvidia-current/libOpenCL.so.1.0.0
然后,我从 nVidia 网站安装了适用于 Ubuntu 10.10 的 CUDA 工具包以及 NVIDIA GPU SDK(位于 /opt/gpu_sdk)。
当我转到 /opt/gpu_sdk/OpenCL 并尝试 make 命令时,我得到:
razvan@...:/opt/gpu_sdk/OpenCL$ make
make[1]: Entering directory `/opt/gpu_sdk/OpenCL/common'
a - obj/release/oclUtils.cpp.o
make[1]: Leaving directory `/opt/gpu_sdk/OpenCL/common'
make[1]: Entering directory `/opt/gpu_sdk/shared'
make[1]: Leaving directory `/opt/gpu_sdk/shared'
make -C src/oclConvolutionSeparable/
make[1]: Entering directory `/opt/gpu_sdk/OpenCL/src/oclConvolutionSeparable'
/usr/bin/ld: cannot find -lOpenCL
collect2: ld returned 1 exit status
make[1]: *** [../../..//OpenCL//bin//linux/release/oclConvolutionSeparable] Error 1
make[1]: Leaving directory `/opt/gpu_sdk/OpenCL/src/oclConvolutionSeparable'
make: *** [src/oclConvolutionSeparable/Makefile.ph_build] Error 2
安装 nvidia-current-dev 包后,我进入 /etc/ld.so.conf.d/ 并创建 nvidia-current.conf,其中我指定了 /usr/lib/nvidia-current 和 /usr/lib32/nvidia-current。然后我使用 ldconfig 缓存新位置。
不用说,它不起作用。我还将 /usr/lib/nvidia-current 和 /usr/lib32/nvidia-current 附加到 LD_LIBRARY_PATH 环境变量中,希望它能起作用...但它不起作用。
答案1
无法设置与 /usr/bin/ld 特别相关的 LD_LIBRARY_PATH。
应该设置 LIBRARY_PATH,它是 gnu 编译器(此处使用)的正确环境变量。
无论 LD_LIBRARY_PATH 和 LIBRARY_PATH 之间有什么联系(或者在这种情况下 ld 和 gcc 以及为什么 gcc 不使用 ld 可执行文件..
答案2
LIBRARY_PATH
在这里查看有关和 的更好解释LD_LIBRARY_PATH
:点击这里
LIBRARY_PATH
LD_LIBRARY_PATH
在编译时、程序执行时进行检查。