This document will tell you about all the necessary steps to get going.
+These instructions assume you are using a B<bash> shell. If you use csh/tcsh,
+then you can either type F<bash> to switch to bash for the compilation or if
+you know what you are doing just replace the export bits with
+setenv.
+
+We further assume that your copies of B<tar> and B<make> are actually B<GNU
+tar> and B<GNU make> respectively. It could be that they are installed as
+B<gtar> and B<gmake> on your system.
+
=head2 Building
Before you start to build RRDtool, you have to decide two things:
=back
Once you have decided. Save the two locations into environment variables.
-Depending on the shell you are using, you can do either (bash,zsh):
BUILD_DIR=/tmp/rrdbuild
- INSTALL_DIR=/usr/local/rrdtool-1.2.19
+ INSTALL_DIR=/usr/local/rrdtool-1.2.99907080300
-Or if you run tcsh:
-
- set BUILD_DIR=/tmp/rrdbuild
- set INSTALL_DIR=/usr/local/rrdtool-1.2.19
If your F</tmp> is mounted with the option noexec (RHEL seems todo that) you have to choose
a different directory!
cd $BUILD_DIR
Lets first assume you already have all the necessary libraries
-pre-installed. Note that these instructions assume that your copies of
-B<tar> and B<make> are actually B<GNU tar> and B<GNU make> respectively. It
-could be that they are installed as B<gtar> and B<gmake> on your system.
+pre-installed.
- wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.19.tar.gz
- tar zxf rrdtool-1.2.19.tar.gz
- cd rrdtool-1.2.19
+ wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.99907080300.tar.gz
+ gunzip -c rrdtool-1.2.99907080300.tar.gz | tar xf -
+ cd rrdtool-1.2.99907080300
./configure --prefix=$INSTALL_DIR && make && make install
Ok, this was very optimistic. This try will probably have ended with
board, just re-run the last line of the instructions above.
But again this may have been too optimistic, and you actually have to
-compile your own copies of the required libraries.
+compile your own copies of some of the required libraries. Things like
+libpng and zlib are pretty standard so you will probably have them on your
+system anyway. Freetype, Fontinst, Cairo, Pango may be installed, but it is
+possible that they are pretty old and thus don't live up to the
+expectations, so you may want to compile their latest versions.
=head3 Build Tipps for AIX
=over
+Some libraries want to know where other libraries are. For this to work,
+set the following environamen variable
+
+ export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
+ export PATH=$INSTALL_DIR/bin:$PATH
+
+Since we are compiling libraries dynamically, you they must further know
+where to find each other. This is done by setting an appropriate LDFLAG.
+Unfortunatly the syntax differs from system to system:
+
+=over
+
+=item Solaris
+
+ export LDFLAGS=-R${INSTALL_DIR}/lib
+
+=item Linux
+
+ export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
+
+=item HPUX
+
+ export LDFLAGS="+b${INSTALL_DIR}/lib"
+
+=item AIX
+
+ export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib"
+
+=back
+
+If you have GNUmake installed and it is not called 'make',
+then do
+
+ export MAKE=gmake
+ export GNUMAKE=gmake
+
+otherwhise just do
+
+ export MAKE=make
+
+
=item Building zlib
+Chances are very high that you already have that on your system ...
+
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
- tar zxf zlib-1.2.3.tar.gz
+ gunzip -c zlib-1.2.3.tar.gz | tar xf -
cd zlib-1.2.3
- env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
- make
- make install
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
=item Building libpng
the end of line 4 means that line 4 and line 5 are on one line.
cd $BUILD_DIR
- wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.10.tar.gz
- tar zxvf libpng-1.2.10.tar.gz
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
+ gunzip -c libpng-1.2.18.tar.gz | tar xf -
cd libpng-1.2.10
- env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
- ./configure --disable-shared --prefix=$BUILD_DIR/lb
- make
- make install
+ env CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR
+ $MAKE
+ $MAKE install
=item Building freetype
cd $BUILD_DIR
- wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.1.10.tar.bz2
- tar jxvf freetype-2.1.10.tar.bz2
- cd freetype-2.1.10
- env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
- ./configure --disable-shared --prefix=$BUILD_DIR/lb
- make
- make install
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
+ gunzip -c freetype-2.3.5.tar.gz | tar xf -
+ cd freetype-2.3.5
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
If you run into problems building freetype on Solaris, you may want to try to
-add the following at the end of the configure line:
+add the following at the start the configure line:
- GNUMAKE=gmake EGREP=egrep
+ env EGREP=egrep
-=item Building libart_lgpl
+=item Building fontconfig
+
+Note that fontconfig has a runtime configuration file in INSTALL_DIR/etc you
+may want to adjust that so that fontconfig finds the fonts on your system.
+Run the fc-cache program to build the fontconfig cache after changeing the
+config file.
cd $BUILD_DIR
- wget http://oss.oetiker.ch/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz
- tar zxvf libart_lgpl-2.3.17.tar.gz
- cd libart_lgpl-2.3.17
- env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
- make
- make install
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
+ gunzip -c fontconfig-2.4.2.tar.gz | tar xf -
+ cd fontconfig-2.4.2
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
-=back
+=item Building Cairo
-Now all the dependent libraries are built and you can try again. Since these
-are static libraries, you may have to use F<ranlib> to make them accessible.
-Especially BSD systems like Mac OS X may require this, Linux and Solaris
-will do just fine without since their F<ar> command does ranlibs job as well.
+ cd $BUILD_DIR
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.4.10.tar.gz
+ gunzip -c cairo-1.4.10.tar.gz | tar xf -
+ cd cairo-1.4.10
+ ./configure --prefix=$INSTALL_DIR \
+ --enable-xlib=no \
+ --enable-xlib-render=no \
+ --enable-win32=no \
+ CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
+
+=item Building Glib
+
+ cd $BUILD_DIR
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.12.13.tar.gz
+ gunzip -c glib-2.12.13.tar.gz | tar xf -
+ cd glib-2.12.13
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
- ranlib $BUILD_DIR/lb/lib/*.a
+=item Building Pango
-This time you tell configure where it should be looking for libraries and
-include files. This is done via environment variables. Depending on the
-shell you are running, the syntax for setting environment variables is
-different. Under csh/tcsh you use:
+ cd $BUILD_DIR
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.17.5.tar.gz
+ gunzip -c pango-1.17.5.tar.gz | tar xf -
+ cd pango-1.17.5
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
- set IR=-I$BUILD_DIR/lb/include
- setenv CPPFLAGS "$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
- setenv LDFLAGS -L$BUILD_DIR/lb/lib
- setenv CFLAGS -O3
+=item Building LibXML2
-If you are running bash/sh/ash/ksh/zsh use this:
+ cd $BUILD_DIR
+ wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz
+ gunzip -c libxml2-sources-2.6.31.tar.gz | tar xf -
+ cd libxml2-sources-2.6.31
+ ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
+ $MAKE
+ $MAKE install
+
+=back
- IR=-I$BUILD_DIR/lb/include
- CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
- LDFLAGS="-L$BUILD_DIR/lb/lib"
- CFLAGS=-O3
- export CPPFLAGS LDFLAGS CFLAGS
+Now all the dependent libraries are built and you can try again. This time
+you tell configure where it should be looking for libraries and include
+files. This is done via environment variables. Depending on the shell you
+are running, the syntax for setting environment variables is different.
And finally try building again. We disable the python and tcl bindings
because it seems that a fair number of people have ill configured python and
tcl setups that would prevent rrdtool from building if they are included in
their current state.
- cd $BUILD_DIR/rrdtool-1.2.19
- ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
- make clean
- make
- make install
+ cd $BUILD_DIR/rrdtool-1.2.99907080300
+ ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
+ $MAKE clean
+ $MAKE
+ $MAKE install
SOLARIS HINT: if you want to build the perl module for the native perl (the
-one shipping with solaris) you will need the sun forte compiler
-installed on your box or you have to hand-tune bindings/perl-shared/Makefile
-while building!
+one shipping with solaris) you will need the sun forte compiler installed on
+your box or you have to hand-tune bindings/perl-shared/Makefile while
+building!
-Now go to I<$INSTALL_DIR>B</share/rrdtool/examples/> and run them to see if your
-build has been successful.
+Now go to I<$INSTALL_DIR>B</share/rrdtool/examples/> and run them to see if
+your build has been successful.
=head1 AUTHOR