无法编译rrd

Posted

技术标签:

【中文标题】无法编译rrd【英文标题】:Failing to compile rrd 【发布时间】:2013-06-06 12:36:07 【问题描述】:

我在使用 Visual Studio 2008 编译 rrdtool 时遇到问题。

我已添加并提取了所有 zip 文件。

我打开了 rrd.sln 并为 3 个项目中的每一个尝试了构建解决方案; rrdlib、rrdtool 和 rrdupdate 但我在所有这些上都失败了。

我使用的是 Windows 2003 R2,但出现以下严重故障: ..\src\rrd_restore.c(235) : 致命错误 C1189: #error : “不知道如何处理 TIME_T 除了 4 或 8 个字节” rrd_resize.c

..\src\rrd_create.c(15):致命错误 C1083:无法打开包含文件:'../rrd_config.h':没有这样的文件或目录 pngsize.c

这些是我遵循的安装说明: 以下是构建 rrdlib.lib 和 rrdtool.exe 的分步说明 Microsoft Visual Studio 2008 (9.0.x) 的 1.3.5 及更高版本。

(1) 在这个文本文件所在的目录下创建一个名为“contrib”的文件夹。

(2)将rrdtool依赖的以下库下载到该文件夹​​中:

- cairo:    http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.10-3_win32.zip 
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.8.10-3_win32.zip

- glib:     http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib_2.24.1-1_win32.zip
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.24/glib-dev_2.24.1-1_win32.zip

- libpng:   http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.0-1_win32.zip
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng-dev_1.4.0-1_win32.zip

- libxml2:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2_2.7.7-1_win32.zip
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libxml2-dev_2.7.7-1_win32.zip

- pango:    http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.28/pango_1.28.0-1_win32.zip
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.28/pango-dev_1.28.0-1_win32.zip

- zlib:     http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib_1.2.4-2_win32.zip
  and       http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib-dev_1.2.4-2_win32.zip

- fontconfig:  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip

- freetype: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.3.12-1_win32.zip

- expat:    http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/expat_2.0.1-1_win32.zip

(3) 将所有 .zip 文件解压到 contrib 文件夹中。不要将每个库提取到自己的库中 目录。我们希望将所有文件合并到一个由“bin、include、lib...”组成的结构中 等文件夹。

(4) 打开win32文件夹下的Visual Studio 2008解决方案“rrd.sln” 您的 rrdtool 文件夹并构建项目 rrdlib(对于 rrdtool-library), rrdtool (对于 rrdtool-executable 取决于 图书馆)或完整的解决方案。构建后事件自动复制 当您构建 .exe 时,rrdtool 所需的所有 dll 可执行。这些 DLL 必须在 rrdtool 所在的所有主机上都可用 运行。

有什么建议吗?

【问题讨论】:

【参考方案1】:

这是因为 Win32 构建缺少 rrd_config.h 文件。在 Linux 中,可以通过配置进程创建该文件。我通过手动修改源代码摆脱了这个问题。只需替换rrd_restore.c中的代码块:

#if SIZEOF_TIME_T == 4
        temp = strtol((char *)text,NULL, 0);
#elif SIZEOF_TIME_T == 8
        temp = strtoll((char *)text,NULL, 0);        
#else
#error "Don't know how to deal with TIME_T other than 4 or 8 bytes"
#endif

与:

temp = strtoll((char *)text,NULL, 0);

并删除rrd_create.c中的include语句:

#include "../rrd_config.h"

那么构建过程就可以顺利完成了。

另一个选择,浏览网址为follow。

【讨论】:

以上是关于无法编译rrd的主要内容,如果未能解决你的问题,请参考以下文章

RRD 简介

about RRD

cacti 不出图 rrd问题 cacti为啥不出图热门博客列表

如何在 CentOS 7 上安装 perl-RRD-Simple 软件包?

自己搭了台cacti,发现rrd目录不生成文件,求解决

批量修改rrd文件配置