在非标准位置安装库并使用它们安装软件

时间:2014-10-11 00:30:52

标签: linux compilation terminal installation

我正在尝试在没有root的情况下在运行Linux的集群上安装软件。但是,该软件在安装之前需要一些非标准库。我在主目录中安装了所需的库。当我使用./configure编译软件的源代码时,我收到一条错误消息,说它无法找到库文件。 我尝试使用CPPFLAGS,LDFLAGS和LD_LIBRARY_PATH来告诉编译器在哪里找到库,但它似乎没有用。

如何在没有管理权限的情况下安装非标准库,并告诉编译器在哪里找到该库?我也应该为其他图书馆做同样的事情吗?

2 个答案:

答案 0 :(得分:0)

我担心这样做的确切过程完全取决于软件的实际脚本和/或Makefile和/或代码。没有通用的答案适用于现有的每个软件包。每个人的配置脚本都是唯一的,不同的。

在某些方面,它还取决于库如何安装在非标准位置。库包通常包括几种配置机制中的一种,使用该库的应用程序必须使用这些机制才能将自己配置到库中;其中一部分包括连接软件应用程序以将正确的RPATH放入软件应用程序的可执行文件所必需的mojo,以便它可以从正确的位置加载库;这通常涉及您提到的变量。您没有提到的一件事是指定-R标志以在可执行文件中设置RPATH。

所以,这里唯一的答案是让你继续深入研究库和应用程序的配置脚本,并尝试弄清楚。除了蛮力外,别无他法。在许多情况下,只是不可能“开箱即用”你想要做的事情,并且有必要修补一个或另一个的配置脚本,以便“正确的事情”发生。

答案 1 :(得分:0)

在构建与以前安装的库链接的二进制文件时设置PKG_CONFIG_PATH

export PKG_CONFIG_PATH="/home/user/dir/install/lib/pkgconfig:$PKG_CONFIG_PATH"

执行针对这些库编译的二进制文件时,请设置LD_LIBRARY_PATH

export LD_LIBRARY_PATH="/home/user/dir/install/lib:$LD_LIBRARY_PATH"

如果您执行安装在非标准位置的二进制文件,请同时设置PATH

export PATH="/home/user/dir/install/sbin:/home/user/dir/install/bin:$PATH"

您可能希望在.bashrc中设置最后两个以供将来使用。

如果文件存在于两个位置,则将先前的变量设置放在字符串的末尾会给非标准库和二进制位置提供更高的优先级。如果您更喜欢使用通过包管理器安装的程序,请考虑切换它们。