【问题标题】:Installing libraries in non standard location and using them to install a software在非标准位置安装库并使用它们安装软件
【发布时间】:2014-10-11 00:30:51
【问题描述】:

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

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

【问题讨论】:

  • 你用的是什么发行版?
  • 红帽企业 Linux 服务器版本 5.5 (Tikanga)

标签: linux compilation terminal installation


【解决方案1】:

恐怕这样做的确切过程完全取决于软件的实际脚本和/或 Makefile 和/或代码的方式。没有适用于现有每个软件包的通用答案。每个人的配置脚本都是独一无二的,并且不同。

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

因此,这里唯一的答案是让您继续深入研究库和应用程序的配置脚本,并尝试找出答案。除了蛮力,没有其他方法可以做到这一点。在许多情况下,您无法“开箱即用”地做您想做的事情,因此有必要修补其中一个或另一个的配置脚本,以便“正确的事情”发生。

【讨论】:

    【解决方案2】:

    在构建链接到以前安装的库的二进制文件时设置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 中设置最后两个以供将来使用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      相关资源
      最近更新 更多