X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=doc%2Frrdbuild.pod;h=5fe138d701b9f4e7224bd42a3b872c247963765d;hb=92b77493980c67a4fde8ae001ac4b939210d6a8d;hp=a428c0fd3e14559f98d0fec4249a106a7c051853;hpb=31f6e9071af7d014dac71d42d61594016832868c;p=rrdtool.git diff --git a/doc/rrdbuild.pod b/doc/rrdbuild.pod index a428c0f..5fe138d 100644 --- a/doc/rrdbuild.pod +++ b/doc/rrdbuild.pod @@ -15,17 +15,52 @@ ones before you can build RRDtool. This document will tell you about all the necessary steps to get going. +These instructions assume you are using a B shell. If you use csh/tcsh, +then you can either type F 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 and B are actually B and B respectively. It could be that they are installed as +B and B on your system. + =head2 Building +Before you start to build RRDtool, you have to decide two things: + +=over + +=item 1. + +In which directory you want to build the software. + +=item 2. + +Where you want to install the software. + +=back + +Once you have decided. Save the two locations into environment variables. + + BUILD_DIR=/tmp/rrdbuild + INSTALL_DIR=/usr/local/rrdtool-1.2.99907080300 + + +If your F is mounted with the option noexec (RHEL seems todo that) you have to choose +a different directory! + +Now make sure the BUILD_DIR exists and go there: + + mkdir -p $BUILD_DIR + cd $BUILD_DIR + Lets first assume you already have all the necessary libraries -per-installed. Note that these instructions assume that your copies of -B and B are actually B and B respectively. It -could be that they are installed as B and B on your system. +pre-installed. - wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/rrdtool-1.2.2 - tar zxf rrdtool-1.2.2 - cd rrdtool-1.2.2 - ./configure --prefix=/path/to/installation && make && make install + 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 B complaining about several missing libraries. If you are on a @@ -35,32 +70,96 @@ package for each library you install. Once you have the missing bits on 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. Here is how: +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 + +If you are woking with AIX, you may find the the B<--disable-shared> option +will cause things to break for you. In that case you may have to install the +shared libraries into the rrdtool PREFIX and work with B<--disable-static> +instead. + +Another hint to get rrdtool working on AIX is to use the IBM XL C Compiler: + + export CC=/usr/vac/bin/cc + export PERLCC=$CC + +(Better instructions for AIX welcome!) + +=head2 Building Libraries + +In order to build the libraries you need a compiler on your system. +Unfortunately compilers are not all alike. This has an effect on the CFLAGS +you want to set. The examples below are for the popular GCC compiler suite. +If you have an other compile you have to use the following settings: =over -=item Building cgilib +=item Sun Forte - wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/cgilib-0.5.tar.gz - tar zxf cgilib-0.5.tar.gz - cd cgilib-0.5 - make CC=gcc CFLAGS="-O3 -fPIC -I." - mkdir -p ../lb/include - cp *.h ../lb/include - mkdir -p ../lb/lib - cp libcgi* ../lb/lib - cd .. + CFLAGS="-xO3 -kPIC" -=item Building zlib +=back + +=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 - wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/zlib-1.2.2.tar.gz - tar zxf zlib-1.2.2.tar.gz - cd zlib-1.2.2 - env CFLAGS="-O3 -fPIC" ./configure --prefix=`pwd`/../lb - make - make install - cd .. +=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 + gunzip -c zlib-1.2.3.tar.gz | tar xf - + cd zlib-1.2.3 + ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" + $MAKE + $MAKE install + =item Building libpng Libpng itself requires zlib to build, so we need to help a bit. If you @@ -68,61 +167,115 @@ already have a copy of zlib on your system (which is very likley) you can drop the settings of LDFLAGS and CPPFLAGS. Note that the backslash (\) at the end of line 4 means that line 4 and line 5 are on one line. - wget http://people.ee.ethz.ch/oetiker/webtools/rrdtool/pub/libs/libpng-1.2.8-config.tar.gz - tar zxvf libpng-1.2.8-config.tar.gz - cd libpng-1.2.8-config - env CPPFLAGS="-I../lb/include" LDFLAGS="-L../lb/lib" CFLAGS="-O3 -fPIC" \ - ./configure --disable-shared --prefix=`pwd`/../lb - make - make install - cd .. - + cd $BUILD_DIR + 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 CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR + $MAKE + $MAKE install + =item Building freetype - wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/freetype-2.1.9.tar.gz - tar zxvf freetype-2.1.9.tar.gz - cd freetype-2.1.9 - env CPPFLAGS="-I../lb/include" LDFLAGS="-L../lb/lib" CFLAGS="-O3 -fPIC" \ - ./configure --disable-shared --prefix=`pwd`/../lb - make install - cd .. + cd $BUILD_DIR + 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 start the configure line: + + env EGREP=egrep + +=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/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 -=item Building libart_lgpl +=item Building Cairo - wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz - cd libart_lgpl-2.3.17 - env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=`pwd`/../lb - make install - cd .. + 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 + +=item Building Pango + + 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 + +=item Building LibXML2 + + 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 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 shellyou are running, the syntax for setting -environment variables is different. Under csh/tcsh you use: +files. This is done via environment variables. Depending on the shell you +are running, the syntax for setting environment variables is different. - set IR=-I`pwd`/lb/include - setenv CPPFLAGS "$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng" - setenv LDFLAGS -L`pwd`/lb/lib - setenv CFLAGS -O3 +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. -If you are running bash/sh/ash/ksh/zsh use this: + cd $BUILD_DIR/rrdtool-1.2.99907080300 + ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python + $MAKE clean + $MAKE + $MAKE install - IR=-I`pwd`/lb/include - CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng" - LDFLAGS="-L`pwd`/lb/lib" - CFLAGS=-O3 - export CPPFLAGS LDFLAGS CFLAGS - -And finally try building again: - - ./configure --prefix=/path/to/installation && 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! -Now go to IB and run them to see if your -build has been successful. +Now go to I<$INSTALL_DIR>B and run them to see if +your build has been successful. =head1 AUTHOR -Tobias Oetiker Eoetiker@ee.ethz.chE +Tobias Oetiker Etobi@oetiker.chE