How to compile RRDTool on Windows/ Strawberry

2.8k Views Asked by At

This question follows How to install RRDTool::OO on Strawberry perl I thought it would be better to create a new question, for the sake of clarity.

Resume:

One wants to install the RRDTool::OO perl library on Windows. To do that, the library RRDTool is required. It is a C lib and must be compiled manually. First thing to be compiled is the rrd.sln project. This runs smoothly with visual C++ Second thing to do is to compile RRDs.XS. This doesn't work at all with Strawberry perl.

1) I launched perl ntmake-build to generate a makefile for windows. 2) Then launched dmake to compile the module. A bunch of compilation error is displayed.

Issues come from the fact that the ntmake-build file use statics path that are not right for Strawberry perl. But even after having correcting them, errors are still thrown:

RRDs.o:RRDs.c:(.text+0x971): undefined reference to `rrd_clear_error'

RRDs.o:RRDs.c:(.text+0x985): undefined reference to `rrd_restore'

RRDs.o:RRDs.c:(.text+0x9f7): undefined reference to `rrd_test_error'

RRDs.o:RRDs.c:(.text+0xafd): undefined reference to `rrd_clear_error'

......................

collect2: ld returned 1 exit status

dmake.exe: Error code 129, while making 'blib\arch\auto\RRDs\RRDs.dll'

Does someone has ever compiled this module on windows/Strawberry?

1

There are 1 best solutions below

3
On

It seems that it is not possible - or complicated due to several hacks to create and apply to the library - to compile RRDs.XS on windows server 2008 64 bits edition. Here are several points:

  • There is no PPM package for RRDTool (at least on the ActiveState repositories).
  • Anyway, Strawberry perl x64 does not embed a PPM tool.
  • The RRDTools makefiles are written for an AS 32 bits installation (mainly due to the static path for perl libraries, maybe I missed other static path - for C libraries for example).

Those are the main points I can list, that avoid a clean installation of RRDTool on Strawberry Perl. This means that the frontend module RRDTool::OO can also not be used.