我想从src安装包的多个版本(比如libX)。包(libX)使用Autotools构建,因此遵循./configure,make,make安装约定。默认情况下安装的是/ usr / local / bin和/ usr / local / lib,我想在/ home / user / libX中安装另一个版本。
另一个问题是libX是另一个包(比如libY)的依赖项,它也使用autotools。如何让libY指向/ home / user / libX中安装的版本?也有可能它的系统包像ffmpeg和我想使用最新的svn版本为我的src代码,因此从src构建它。在那种情况下我该怎么办?在这种情况下,最好的做法是什么,以便我不破坏系统库?
我正在使用Ubuntu 10.04和Opensuse 10.3。
答案 0 :(得分:4)
您通常可以通过--prefix
选项进行配置,告诉它将库安装在其他位置。因此,对于个人版本,您通常可以将其运行为:
./configure --prefix=$HOME/usr/libX
它将安装在$HOME/usr/libX/bin
,$HOME/usr/libX/lib
,$HOME/usr/libX/etc
等等。
如果从源代码构建libY,配置脚本通常使用pkg-config
工具来查找软件包的存储位置。 libX应该在目录$HOME/usr/libX/lib/pkgconfig
中包含一个.pc文件,它告诉configure在哪里查找头文件和库文件。您需要告诉pkg-config工具首先查看您的目录。
这是通过将PKG_CONFIG_PATH设置为首先包含您的目录来完成的。 配置libY时,请尝试
PKG_CONFIG_PATH=$HOME/usr/libX/lib/pkgconfig:/usr/local/lib/pkgconfig ./configure
man pkg-config
应该提供详细信息。