如果依赖库路径是正确的,库也是没问题的,找不到的原因,是因为Linux下需要设置环境变量,来添加库的查找路径;

 

LD_LIBRARY_PATH: 动态库的查找路径

设置:

方法一: export  LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是退出当前终端后就失效

方法二: 修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile

1. 在其中添加例如export LD_LIBRARY_PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH

2. source .bashrc  (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)

方法三:这个没有修改LD_LIBRARY_PATH但是效果是一样的实现动态库的查找,

1. /etc/ld.so.conf下面加一行/usr/local/mysql/lib

2. 保存后执行 ldconfig  生效

(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)

方法三设置稍微麻烦,好处是比较不受用户的限制。
 

但是这样会遇到一个问题,就是发布程序的时候,不可能每次都在新机器上配置环境,那我建议写一个shell脚本,获取当前执行程序路径,并设置动态库路径为此路径,那想要执行程序,直接执行脚本即可。

附上脚本:

#!/bin/bash

#获取当前执行程序路径
SOURCE="$0"

while [ -h "$SOURCE"  ]; do # resolve $SOURCE until the file is no longer a symlink

    DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd  )"

    SOURCE="$(readlink "$SOURCE")"

    [[ $SOURCE != /*  ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located

done

DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd  )"

#设置环境变量为当前路径
export LD_LIBRARY_PATH=${DIR}:$LD_LIBRARY_PATH 

#执行程序,我这里test1,按你程序名称改
./test1

 

Logo

更多推荐