如何在不破坏 Fedora 的情况下构建具有特定库的工具?

如何在不破坏 Fedora 的情况下构建具有特定库的工具?

到目前为止,从未需要偏离标准的 Fedora 16 核心开发组件。我需要建立杂乱MX项目,但是这个库需要glib-2.0.32。除此之外,glib-2 还需要 libffi-3.0.11。

我可以下载源代码并构建这些库,但是,我担心安装它们会破坏系统的其余部分。

杂乱MX项目使用 autotools 并查找 glib-2 版本。

问题是:

  1. 如果我构建并安装新组件,并且出现问题,您可以使用 yum 或类似的东西恢复吗?

  2. 有没有办法让自动工具在另一个目录中查找已安装的标头?

答案1

不要尝试在系统目录中安装较新的 Gtk/Gnome 库。它们的向后兼容性很差,您可能会面临破坏现有程序的风险。

在单独的目录层次结构中编译并安装新库。运行./configure --help以了解如何在编译库时指定库的路径和包含文件。例如,如果您看到

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

然后设置以下环境变量:

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

传递--prefix=/path/to/my/gnome/stuff./configure, 将所有内容安装到您自己的目录中。

或者,如果您需要安装很多库,重建所有内容,包括使用,这会更容易pkg 配置。也安装pkg-config在下面,然后设置/path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

答案2

通过自动工具寻找依赖项的源有一个configure.ac 文件(和/或Makefile.am,我不确定这个文件),其中定义了这些依赖项。大多数时候,人们/IDE 只会将当前安装的库版本作为依赖项,但实际上在最新版本中并不需要它们。

您可以尝试将所需的版本修改为您的版本并尝试构建包。

您不能直接让自动工具在某个备用路径中查找,但 IIRC 自动工具使用 pkg-config 来确定软件包安装细节 (man pkg-config)。您可以通过环境变量 PKG_CONFIG_PATH 告诉 pkg-config 在其他目录中查找。但是,pkg-config 路径仅在您实际安装了更新的库时才有效。但我相信您可以编辑 *.pc 文件来强制 clutter-mx 静态链接这些库。

如果您安装一个库的两个版本,并且有时使用一个版本,有时使用另一个版本,则可能会遇到问题。如果你真的替换了 rpm 放在那里的文件,你就完蛋了。

我的建议是修改构建依赖项,或者如果需要确定为什么需要更新版本的库 XY,并修改 clutter-mx 源以不​​需要该最新版本并使用当前版本。我的第二个最佳建议是获取/构建所需库的分发包并安装它们。你真的不应该脱离你的发行版(即包管理器)设置的世界。那里有邪恶势力。 :-)

相关内容