在主目录中本地安装库,但程序无法识别它

sci*_*tor 12 linux terminal home-directory libraries installation

我正在以非 root 用户身份在服务器上安装程序。具体来说它是 tmux 1.5,但在我看来,这应该广泛适用于所有本地安装的程序(我提到了程序名称,以防这个问题最终不是我自己的错误)。

该程序要求我安装一些依赖库(例如 libevent 和 ncurses)。所以,我在本地安装了它们,因为我没有 root 访问权限

cd $HOME/library/installation/folder
DIR=$HOME/local
./configure --prefix=$DIR 
#... make ... make install 
Run Code Online (Sandbox Code Playgroud)

现在,要安装该程序,我还必须包含库包:

cd $HOME/program/installation/folder
./configure --prefix=$DIR CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"
#... make ... make install 
Run Code Online (Sandbox Code Playgroud)

好的,所以这会将程序安装到 $HOME/local/bin 中,但如果我运行可执行文件: $HOME/local/bin/tmux ,则会出现以下错误:

tmux:加载共享库时出错:libevent-2.0.so.5:无法打开共享对象文件:没有这样的文件或目录

在我看来,程序找不到所需的库,但文件 libevent-2.0.so.5 确实存在于 $HOME/local/lib 中,如配置选项中所指定。我想知道如何让程序识别已安装的库以便运行。我尝试将符号链接放在 $HOME/lib、$HOME/bin 和 $HOME/local/bin 中,但这些都不起作用。任何想法和建议将不胜感激

dro*_*ang 21

尝试使用重新构建 libevent

./configure --disable-shared
Run Code Online (Sandbox Code Playgroud)

我怀疑这会解决您的问题,因为在构建二进制文件时将链接该库,并且不需要在运行时搜索。

或者,如果您需要动态链接的 libevent,您可以将 libevent-2.0.so.5 的包含目录添加到您的 LD_LIBRARY_PATH 环境变量中:

export LD_LIBRARY_PATH=${HOME}/local/lib/:${LD_LIBRARY_PATH}
Run Code Online (Sandbox Code Playgroud)


Pat*_*hes 7

您还可以设置 RPATH,它在二进制文件本身中对库搜索补丁进行编码

只需添加-R $DIR/libCFLAGS.