/usr/bin/ld cannot find lopencl的解决方案

详情

使用make命令时发现报错: “ld cannot find lOpenCL" ,详细信息如下所示。

/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:20: DeviceInfo] Error 1

原因

如果 gcc 或 g++ 在编译过程中报错 cannot find -l<nameOfTheLibrary>,那么它实际上是在寻找名为 lib{nameOfTheLibrary}.so 的共享库文件,但是在默认情况下,它无法在共享库搜索路径中找到该文件。这些默认搜索路径包括 /lib/usr/lib 以及由 /etc/ld.so.conf 指定的路径。如果设置了环境变量 LD_LIBRARY_PATH,那么该变量中列出的目录也将成为搜索路径。

解决方案

解决方法是为该库创建一个符号链接,将其链接到一个已知的库位置 ,例如:

sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so

或者,可以使用环境变量 LD_LIBRARY_PATH 来实现这一目的,或者编辑 /etc/ld.so.conf.d/myapp.conf,然后运行命令 ldconfig 来更新库路径。

在此之前可使用locate或find命令去寻找so文件的位置,如:

root@ubuntu:/home/j/Desktop# locate libOpenCL.so
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
/usr/share/man/man7/libOpenCL.so.7.gz
root@ubuntu:/home/j/Desktop# find / -name 'libOpenCL.so*'
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
/usr/lib/x86_64-linux-gnu/libOpenCL.so
/usr/share/man/man7/libOpenCL.so.7.gz
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
root@ubuntu:/home/j/Desktop#

找到之后便可以安装了。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了一种解决方法,即通过软链接将库文件放置在"/usr/local/lib/"目录下,然后使用ldconfig命令来使系统能够找到该库文件。具体的软链接命令如下:sudo ln -s $HOME/kimera_ws/build/pangolin/src/libpangolin.so /usr/local/lib/libpangolin.so。这样,系统就可以找到该库文件了。 引用是一个错误信息,提示找不到名为"lg2o_ext_csparse"的库文件。这种错误通常是由于库文件没有添加到ld的检索目录中导致的。解决方法是将该库文件添加到ld的检索目录中,可以通过软链接的方式将该库文件放置在正确的目录下。 引用也提到了类似的错误,即在软件编译时出现"cannot find -lxxx"或者".so undefined xxx"的错误。主要原因是库文件没有导入到ld的检索目录中。解决方法同样是将库文件添加到ld的检索目录中。 因此,根据引用的方法,您可以尝试将"/usr/local/bin/ld"无法找到的库文件放置到正确的目录下,并通过软链接的方式将其添加到ld的检索目录中,以解决该错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [/usr/bin/ld: cannot find -l 基本原理解释与解决方法](https://blog.csdn.net/boyhoodme/article/details/125097384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [usr/bin/ld: cannot find XXX错误解决方法](https://blog.csdn.net/zhuquan945/article/details/79725201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值