Linux程序部署无法加载SO文件问题解决方案

本文主要介绍Linux系统上程序部署时,无法加载SO文件问题解决方案(作者:李栓鹏)。

Linux程序安装部署运行方式与我们熟知的Windows程序有很大的不同:

在Windows上,一般EXE程序加载DLL的路径顺序是:首先是当前路径,然后是系统配置的PATH环境变量

在Linux上,可执行程序加载动态库SO文件的路径顺序是:系统配置的LD_LIBRARY_PATH路径。(当前路径不在加载SO的路径上)

也就是说,如果在Linux上将程序部署在非标准路径上,程序如果需要加载自己实现的SO文件,会找不到SO文件,即使SO文件和程序在同一个目录。

在开发层面,即使使用dlopen手动加载SO文件,除非使用绝对路径,否则也不能打开

可以使用ldd命令查看当前程序所需要加载的SO是否都能找到:ldd ./程序名

解决Linux部署出现上述问题的方案有两种:

第一种:将程序按照标准方式部署安装

第二种:配置当前LD_LIBRARY_PATH,将当前路径加入到LD_LIBRARY_PATH

对于第二种方案,这里给出一个一劳永逸的方案,达到与Windows下相同的效果:

修改配置文件,如果只想改当前用户,则修改 /bashrc或/bash_profile,如果想修改整个系统则修改/etc/profile 建议修改当前用户配置文件

这里以修改当前用户的配置为例:

在配置文件中新增两行(如果只想将某个路径加入,修改下面的./为希望加入的路径,例如:/usr/local)

LD_LIBRARY_PATH=./

export LD_LIBRARY_PATH

修改完成之后保存文件,注销当前用户重新登录即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值