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)