linux下运行动态库问题 cannot open shared object file: No such file or directory

如果动态库不在同一级目录下,则需要将以上文件的目录加载到动态库搜索路径中,设置的方式有以下几种:
一. 将动态库路径加入到LD_LIBRARY_PATH环境变量
 1.在终端输入:export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX:/XXX/XXX.so      只在当前终端起作用
 2. 修改~/.bashrc或~/.bash_profile,最后一行添加 export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX:/XXX/xxx.so,保存之后,使用source  .bashrc执行该文件 ,当前用户生效
 3. 修改/etc/profile,添加内容如第2条,同样保存之后使用source执行该文件  所有用户生效

 

二.在/etc/ld.so.conf文件结尾添加动态库的路径,如/XXX和/XXX/xxx/,保存之后,然后执行ldconfig

       

root@ky:~# cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

/usr/lib/apache2
root@ky:~# echo /usr/local/lib >> etc/ld.so.conf

root@ky:~# ldconfig


 

三.可以将各依赖库放入到/lib64或usr/lib64下

 

四.可以在Makefile中使用-Wl,-rpath来指定动态路径,但是需要将网络sdk各个动态库都用 –l方式显示加载进来
 比如:-Wl,-rpath=/XXX:/XXX/HCNetSDKCom -lhcnetsdk  -lhpr –lHCCore –lHCCoreDevCfg –lStreamTransClient –lSystemTransform –lHCPreview –lHCAlarm –lHCGeneralCfgMgr –lHCIndustry –lHCPlayBack –lHCVoiceTalk –lanalyzedata -lHCDisplay


推荐使用一或二的方式,但要注意优先使用的是同级目录下的库文件。

 

在编译时指定头文件和库路径的方法

$(CXX) -L$(LIB) -I$(INC) ${SRC}/*.cpp -o $(EXE) $(LIBS)


-I 指定头文件路径  -L指定库路径  注意中间不加空格

 

 

 

 

 

 

### 解决 Linux 系统中 `cannot open shared object file: No such file or directory` 的问题 当遇到错误提示 `OSError: libopencv_world.so.4.4: cannot open shared object file: No such file or directory` 或类似的共享对象文件找不到的情况时,通常是因为系统未能正确加载所需的动态链接库。以下是可能的原因以及解决方案: #### 1. **确认共享库是否存在** 首先需要验证目标共享库是否确实存在于系统中。可以通过以下命令查找指定的 `.so` 文件: ```bash find / -name "libopencv_world.so.4.4" 2>/dev/null ``` 如果未找到该文件,则说明缺少必要的依赖项。此时可以尝试重新安装相关软件包或手动下载并放置到适当位置。 对于 OpenCV 特定版本缺失的问题,可考虑通过官方源码编译或者使用包管理器安装对应版本[^1]: ```bash sudo apt-get update && sudo apt-get install libopencv-dev ``` #### 2. **更新动态链接器缓存配置** 即使存在所需共享库,但如果其所在目录不在标准搜索路径范围内,仍会出现上述错误消息。因此需检查 `/etc/ld.so.conf` 配置文件及其关联子目录列表是否已包含自定义安装路径 (如 `/usr/local/lib`) 。如果没有,请执行如下操作将其添加进去,并刷新全局可见范围内的变更记录: ```bash echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/usr_local_lib.conf >/dev/null sudo ldconfig ``` 此过程会通知操作系统新增加了一个潜在可用资源集合地址供后续调用解析参考依据[^2]。 #### 3. **虚拟环境冲突排查** 有时开发人员会在不同项目间切换频繁而导致某些特定框架内部组件相互干扰现象发生;特别是像 PyTorch 这样高度依赖 GPU 加速支持的技术栈更是如此。为了防止此类情况再次重现建议定期审查当前工作区下的全部第三方扩展模块清单以便及时发现异常状况的存在迹象: ```bash conda list | grep -E 'torch|cuda' ``` 理想状态下应该仅仅展示那些源自于可信供应商所提供的正式发行版条目而已而不是混杂着其他来源不明的东西在里面混淆视听造成困扰[^3]. 综上所述,针对本案例描述中的具体表现形式采取相应措施之后应当能够有效缓解乃至彻底消除之前所遭遇过的难题. ```python import cv2 print(cv2.__version__) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值