linux cannot open file,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指定库路径 注意中间不加空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值