rrdtool 1.4.7 编译失败:glib-2.0/glib.h

rrdtool 1.4.7 编译失败:glib-2.0/glib.h

我正在尝试从源包编译rrdtool。我不使用 RPM 软件包,所以不要要求我安装软件包;)

我在rrdtool之前编译了所有需要的软件http://oss.oetiker.ch/rrdtool/doc/rrdbuild.en.html

rrdtool的./configure就可以了。

但是当我做时我收到以下错误:

      CC     rrdcached-rrd_daemon.o
rrd_daemon.c:108:27: erreur: glib-2.0/glib.h : Aucun fichier ou dossier de ce type
rrd_daemon.c:246: erreur: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
rrd_daemon.c: In function âadd_response_infoâ:
rrd_daemon.c:540: attention : implicit declaration of function âva_startâ
rrd_daemon.c:540: attention : nested extern declaration of âva_startâ
rrd_daemon.c:546: attention : implicit declaration of function âva_endâ
rrd_daemon.c:546: attention : nested extern declaration of âva_endâ
[...]

glib-2.0/glib.h 存在于我的系统中,位于 /usr/local/glib-2.34.0/glib/glib.h

我设置了包含 glib 路径的环境变量 PKG_CONFIG_PATH 。 /usr/local/glib-2.34.0/lib/pkgconfig/

我看到了一些关于它的主题,但对我的情况没有任何帮助。

查看 config.log 一切似乎都正常!

答案1

行政文件或CE类型档案" == "没有这样的文件或目录"

PKG_CONFIG_PATH包含要添加的(非默认)路径,以便查找额外的.pc文件,而不是包本身。如果该目录中有正确的.pc文件,它应该可以工作。

检查以下输出:

pkg-config --cflags --libs glib-2.0

(有和没有设置PKG_CONFIG_PATH

它应该显示您的glib-2.0包含和库的安装路径,这是我的,安装到/usr/local/

-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include  \
-L/usr/local/lib -lglib-2.0

如果错误则检查.pc文件。

然而,您给出的路径glib.h看起来更像是解压的源代码,而不是完整的安装glib-2.0。您已经安装并构建了 glib-2.0 吗?如果您按照说明 URL 构建它,那么它似乎不正确,您需要重复该步骤。

没有理由不对其中一些软件包进行正常的配置/制作/安装/usr/local,尤其是glib-2.0,兹库,库文件,libXML2-- 除非它们与您已经安装的东西冲突。

RRDtool 构建文档背后的逻辑是构建/tmp并安装所有内容,/opt以使其尽可能独立。虽然它可能是一种相当健壮的方法,但它也有一些缺点(包括需要设置各种神奇的环境变量)。


更新:问题是 glib-2.0 的安装路径与 rrdtool 中使用的包含冲突。当您将其安装到/usr/local/glib-2.34.0/构建.pc时指定/usr/local/glib-2.34.0/include/glib-2.0.这条路已经包含子目录 glib-2.0因此,当 rrdtool 尝试包含<glib-2.0/glib.h>它时,它会失败。我相信这是一个 rrdtool 问题,当 glib-2.0 安装到/usr或下的“预期”位置时/usr/local(大概当您完全使用构建指南路径时),它会被掩盖。

如果您安装到/usr/local,包含路径/usr/local/include将导致“ #include <glib-2.0/glib.h>”正常工作。

作为修复,我建议构建并安装所有依赖项/usr/local(然后您只需要设置PKG_CONFIG_PATH=/usr/local/lib/pkgconfig或者严格遵循rrdtool构建说明,或者您可以CFLAGS在运行之前设置为安装 glib-2.0 的位置configure,例如:

export CFLAGS="-I/usr/local/glib-2.34.0/include"

(即 报告的上一级目录pkg-config --cflags glib-2.0

如果编译中断,您可以通过运行以下命令更好地了解发生的情况:

make AM_DEFAULT_VERBOSITY=1

发生错误后,这次将重试并打印所使用的命令,以便您可以检查gcc -I标志。

好的,找到了错误报告,它是固定的(尽管标题“修复使用非标准 glib 位置的构建“有点误导)。但从那以后就没有新的稳定版本了。FWIW,用户列表上有几个未回答的问题似乎是同样的问题。

相关内容