安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法

devtools/2025/2/22 19:45:29/

硬件:雷神MIX G139H047LD 工控机

系统:ubuntu20.04

之前运行某项目时,处于正常状态。后来由于要使用海康威视工业相机(型号:MV-CA013-21UC),便下载了并安装了该相机的SDK,之后运行原本正常的项目,就会出现以下错误:

/usr/bin/ld: …/…/lib/libpcl_io.so.1.8.0: undefined reference to `libusb_set_option’

 由于该错误中出现了 libpcl,错误以为是前期安装编译pcl存在问题,故开始进行pcl1.8.1版本的安装和编译,这个过程中出现了很多error,再全部解决之后,终于pcl编译成功了,

 原本以为这次可以顺利通过项目编译,但是再次出现了“/usr/bin/ld: …/…/lib/libpcl_io.so.1.8.0: undefined reference to `libusb_set_option’”的error,思考之后,觉得可能是海康威视相机SDK导致的该错误。正好看到以下文章,也是解决这个错误,便借鉴了以下文章。

https://blog.csdn.net/qq_40301351/article/details/144818802?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522feb47a6e9229e901500bcd662d336f6f%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=feb47a6e9229e901500bcd662d336f6f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-144818802-null-null.142^v101^pc_search_result_base7&utm_term=undefined%20reference%20to%20%60libusb_set_option&spm=1018.2226.3001.4187https://blog.csdn.net/qq_40301351/article/details/144818802?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522feb47a6e9229e901500bcd662d336f6f%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=feb47a6e9229e901500bcd662d336f6f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-144818802-null-null.142^v101^pc_search_result_base7&utm_term=undefined%20reference%20to%20%60libusb_set_option&spm=1018.2226.3001.4187

出现上述error的原因在于:

安装海康相机SDK后,系统原本的 libusb 依赖会被重新链接到海康SDK指定的路径。由于 libusb 是许多外设程序的重要依赖库,这种更改可能导致其他设备驱动或程序(例如使用系统默认 libusb 的程序)出现冲突,从而引发上述错误。

解决方法:

1、查看环境变量配置

echo $LD_LIBRARY_PATH

在终端运行上述命令后,输出:

jiangqiang@jiangqiang:~$ echo $LD_LIBRARY_PATH 

/home/jiangqiang/jiangqiang/wk/livox_ros_driver_ws/devel/lib:/opt/ros/noetic/lib:/opt/MVS/lib/64:/opt/MVS/lib/32:/usr/lib/x86_64-linux-gnu:/opt/MVS/lib/64:/opt/MVS/lib/32:/opt/MVS/lib/64:/opt/MVS/lib/32:/usr/local/cuda-12.3/lib64

 出现了包含“MVS”字母的环境变量,这些代表的是海康威视(Hikvision)MVS(Machine Vision Software)的库路径,而且LD_LIBRARY_PATH 的顺序决定了动态库的查找优先级。位于前面的MVS路径会优先被查找,因此项目原本使用的默认动态库的链接路径/usr/lib/x86_64-linux-gnu无法找到。因此报错。

2、打开bashrc

sudo gedit ~/.bashrc

通过搜索将出现“MVS”的所在语句全部注释掉,同时,在文件末尾添加以下一行:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

 /usr/lib/x86_64-linux-gnu 是系统默认的 libusb 路径。如果有多个默认路径,请确保所有可能的系统库路径都在 LD_LIBRARY_PATH 变量中优先级靠前。

3、保存bashrc文件

source ~/.bashrc

4、重新在工作空间中编译,编译能够顺利通过。

注意:以上这种方式存在不足,具体在于:如果这个项目同时需要用到海康威视相机时,通过上述方法会导致相机不可用,这种情况下,还可以在CMakeLists.txt中设置项目的链接路径。

即:在 CMakeLists.txt 中设置链接 libusb 的路径为 /usr/lib/x86_64-linux-gnu

使用 find_package 查找 libusb:

CMake 提供了 find_package 来查找系统安装的库。对于 libusb,可以使用以下代码:

find_package(libusb REQUIRED)

 然后将bashrc里面的有关“MVS”的语句的注释全部取消。

运行项目代码,可以正常运行。


http://www.ppmy.cn/devtools/161009.html

相关文章

go WEB框架

推荐选型 https://chat.deepseek.com/a/chat/s/e6061607-8f33-4768-a5f0-8970cb1ffefd echo github:https://github.com/labstack/echo wiki:https://echo.labstack.com/docs/quick-start block:https://blog.csdn.net/qq_38105536/artic…

HTML Canvas clip 深入全面讲解

在HTML5的<canvas>元素中&#xff0c;裁剪路径&#xff08;clipping path&#xff09;是一个非常强大的功能&#xff0c;它允许你定义一个区域&#xff0c;在该区域内进行绘制&#xff0c;而区域外的内容将不会被显示。通过合理使用裁剪路径&#xff0c;可以实现复杂的图…

EasyRTC低延迟通信与智能处理:论嵌入式WebRTC与AI大模型的技术融合

在当今数字化时代&#xff0c;实时通信的需求日益增长&#xff0c;视频通话作为一种高效、直观的沟通方式&#xff0c;广泛应用于各个领域。WebRTC技术的出现&#xff0c;为实现浏览器之间的实时音视频通信提供了便捷的解决方案。而基于WebRTC技术的EasyRTC视频通话SDK&#xf…

数据结构——哈希表

一、哈希表 1.1 哈希表的概念 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记录&#xff0c;以加快查找的速度。这个映射函…

认识HTML的标签结构

一、HTML的基本概念 1.什么是HTML&#xff1f; ①HTML是描述网页的一种标记语言&#xff0c;也被称为超文本标记语言【并不是一种编程语言】 ②HTML包含了HTML标签和文本内容 ③HTML文档也称为web页面 2.HTML的标签 HTML的标签通常成对出现&#xff0c;HTML文档由标签和受…

nats集群搭建

本次使用三台机器搭建nats集群&#xff0c;ip分别为192.168.20.7、192.168.20.8、192.168.20.10&#xff0c;预先在三台机器上装好nats&#xff0c;版本为0.0.35。 1. 在192.168.20.7机器上操作&#xff0c;配置server.conf # 为节点设置唯一的名称 server_name: node1 port: …

多场景建模在得物交易搜索下的创新与实践

一、整体概述 2024年得物算法团队基于交易搜索的场景特点与数据现状&#xff0c;围绕“多场景建模”开展了一系列工作&#xff0c;取得了较大幅度的在线业务指标提升&#xff1b;同时我们利用碎片时间将积累的技术经验形成相应的论文&#xff0c;成功被搜索推荐/数据挖掘领域顶…

计算机网络:应用层 —— 域名系统 DNS

文章目录 什么是域名系统 DNS&#xff1f;域名系统DNS的作用域名结构顶级域名二级域名因特网的域名空间 域名服务器域名解析的过程递归查询迭代查询 DNS本地高速缓存总结 什么是域名系统 DNS&#xff1f; 域名系统&#xff08;DNS&#xff0c;Domain Name System&#xff09;是…