User Tools

Site Tools


Site Tools

Installing or Building Libraries


This page regroups some libraries that I encountered, and how I built them. When possible, I specified the version of the library used, and the version of the compiler used. If you get an error using these instructions, do not hesitate to mail me.

  • System libraries
Name Version Compiler Build-Install
openssl 1.0.1e gcc 4.6.4 openssl
python 2.7.5 gcc 4.6.4, intel 13.0.1 python
google perfTools (gperftool) 1.8.3, 2.0 intel 11.1 google perfTools (gperftool)
glib 2.4.8 4.4.6 glib
libsigc++ 2.3.1 gcc 4.4.6 libsigc++
glibmm 2.4.8 gcc 4.4.6 glibmm
libxml2 2.7.8 gcc 4.4.6 libxml2
curl 7.22.0 gcc 4.4.6 curl
openmpi 1.4.5, 1.6.3 gcc 4.4.6 openmpi
boost 1.46.1,1.48.0,1.53.0,1.52.0 gcc 4.4.6, intel 11.1 boost
tcl 8.5.13, 8.5.14 gcc 4.6.4 tcl
tk 8.5.14 gcc 4.6.4 tk
tclx 8.4 gcc 4.6.4 tclx
readline 6.2 gcc 4.4.6 readline
zlib NA gcc 4.4.6 zlib
hdf5 NA gcc 4.4.6, intel 11.1 hdf5
Intel MPI Benchmarks NA gcc 4.4.6, intel 11.1 Intel MPI Benchmarks
modules 3.2.10 gcc 4.4.6 modules
expat 2.1.0 intel 13.1 expat
bzip2 1.0.6 gcc 4.6.3, intel 11.1 bzip2
libtool 2.4 gcc 4.6.4, intel 11.1, intel 13.0.1 libtool
icu 4.2 gcc 4.6.4 icu
boost-icu 1.48.0 gcc 4.6.4 boost-icu
sqlite3 3.7.16.2 gcc 4.6.4, intel 13.0.1 sqlite3
medusa 2.1.1 gcc 4.4.2 medusa
libssh2 1.4.3 gcc 4.4.2 libssh2
John the Ripper 1.7.8 jumbo 2 - MPI gcc 4.4.2 John the Ripper
swig 2.0.9 gcc 4.6.3 swig
pcre 8.32 gcc 4.6.3 pcre
valgrind 3.8.1 gcc 4.6.3 valgrind
R 3.0.1 gcc 4.6.4 R
netcdf 4.1.1 intel 13.0.1 netcdf
python setuptools 1.1.6 gcc 4.6.4 python setuptools
gnu m4 1.4.17 gcc 4.8.2 gnu m4
  • Mathematics libraries
Name Version Compiler Build-Install
fftw 3.3.3 gcc 4.4.6, intel 11.1 fftw
blas NA gcc 4.4.6, intel 11.1, intel 13.0.1 blas
lapack NA gcc 4.4.6 lapack
ScaLapack - Blacs 2.0.2 gcc 4.6.3 ScaLapack - Blacs
numpy 1.7.0 gcc 4.6.3, intel 13.0.1 numpy
scipy 0.12.0 intel 13.0.1 scipy
gsl 1.16 intel 13 SP1 gsl
  • Physic libraries
Name Version Compiler Build-Install
pyevolve 0.6rc1 gcc 4.6.4 pyevolve
gdal 1.7.1, 1.9.2 gcc 4.4.6, gcc 4.6.3 gdal
crac NA intel 11.1 crac
openKIM NA gcc 4.4.6 openKIM
mira 3.4.1.1 intel 13.1 mira
vasp 5.2 VTST, 5.3 VTST intel 11.1 vasp
proj 4.8.0 gcc 4.6.3 proj
gdal-ogr 1.9.2 gcc 4.6.4 gdal-ogr
mapnik 2.1.0 gcc 4.6.3 mapnik
otb 3.16 gcc 4.6.4 otb
gromacs 4.5.5 gcc 4.6.3 gromacs
gerris snap 131206 gcc 4.8.2+intel 12.1.3+MPT 2.06 gerris
metis 5.02 intel 14.01 metis
telemac v6p3r2 intel-14.0.2 openmpi-1.6.5 telemac
  • Rendering libraries
Name Version Compiler Build-Install
matplotlib 1.3.0 gcc 4.6.4 matplotlib
flex 2.5.37 intel 11.1 flex
gnuplot 4.6.1 gcc 4.4.6 gnuplot
motif 2.3.4 gcc 4.6.3 motif
freetype2 2.4.11 gcc 4.6.3 freetype2
xpdf 3.03 gcc 4.6.3 xpdf
X11 bitmaps 1.1.1 gcc 4.6.3 X11 bitmaps
fltk 1.3.2 gcc 4.6.3 fltk
geotiff 1.4.0 gcc 4.6.3 geotiff
tiff 4.0.3 gcc 4.6.3 tiff


System libraries


openssl


Note : you cannot compile openssl with intel compiler, tests and use will always fail (with current intel icc 13.0.1 version and previous for sure).

./config --prefix=/soft/openssl/1.0.1e shared zlib-dynamic
make
make test
make install


python


Installation with ssl support (important for further packages installation), using openssl.Untar, and edit setup.py. Find these lines, and edit them to match your openssl directory installation :

        # Detect SSL support for the socket module (via _ssl)
        search_for_ssl_incs_in = [
                              '/soft/system/openssl/1.0.1e/ssl/include',
                              '/soft/system/openssl/1.0.1e/include/'
                             ]
        ssl_incs = find_file('openssl/ssl.h', inc_dirs,
                             search_for_ssl_incs_in
                             )
        if ssl_incs is not None:
            krb5_h = find_file('krb5.h', inc_dirs,
                               ['/usr/kerberos/include'])
            if krb5_h:
                ssl_incs += krb5_h
        ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
                                     ['/soft/system/openssl/1.0.1e/lib',
                                      '/soft/system/openssl/1.0.1e/ssl/lib/'
                                     ] )

Then, edit Modules/Setup.dist, and uncomment these lines, and set the SSL variable to match your openssl installation directory.

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/opt/cluster/softs/intel-13.x-soft/system/openssl/1.0.1e
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto

And copy Modules/Setup.dist to Modules/Setup

cp Modules/Setup.dist Modules/Setup

Now you can configure and compile :

./configure --prefix=/soft/system/python/2.7.5
make
make test

Important : when compiling with Intel Compiler, I got errors during the test, and I got none using gcc. Even if you use Intel to compile numpy or scipy, I strongly recommand to compiler Python using only gcc.If you use Intel, you may encounter this error :

INSTALL/Python-2.7.5/Modules/_ctypes/libffi/src/x86/ffi64.c(56): error: identifier "__m128" is undefined
    UINT128 i128;
    ^
compilation aborted for INSTALL/Python-2.7.5/Modules/_ctypes/libffi/src/x86/ffi64.c (code 2)...Failed to build these modules:
_ctypes  

See in the error section of this website. You just need to add #include <emmintrin.h> with the other includes in Modules/_ctypes/libffi/src/x86/ffi64.c

I also got an error at make install with intel because of already installed python on the cluster. Just bypass it using make -k.If you compile with gcc, no errors anywhere.However, we wanted ssl support, and we get :

Failed to find the necessary bits to build these modules:
_bsddb             _curses            _curses_panel
_hashlib           _sqlite3           _ssl  

This is wrong. If you take a look at your lib :

nm -n libpython2.7.a | grep -i "ssl"

You can see that the lib incorporate the ssl support. The “Failed to find the necessary bits to build these modules: _ssl” is wrong.Now you can install.

make install

Don't forget to add your new python into PATH and LD_LIBRARY_PATH.

Tips on python module path :

To display all modules loaded by python, use :

PYTHON

>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg',
'c:\\testdir',
'C:\\Windows\\system32\\python25.zip',
'C:\\Python25\\DLLs',
'C:\\Python25\\lib',
'C:\\Python25\\lib\\plat-win',
'C:\\Python25\\lib\\lib-tk',
'C:\\Python25',
'C:\\Python25\\lib\\site-packages',
'C:\\Python25\\lib\\site-packages\\PIL',
'C:\\Python25\\lib\\site-packages\\win32',
'C:\\Python25\\lib\\site-packages\\win32\\lib',
'C:\\Python25\\lib\\site-packages\\Pythonwin']

And here, to add c:\testdir to PATH, we used :

export PYTHONPATH=c:\testdir:$PYTHONPATH 

google perfTools (gperftool)


./configure --prefix=/soft/google-perftools/1.8.3 CC=icc CXX=icpc CXXFLAGS="-O3 -xHOST -no-prec-div" CFLAGS="-O3 -xHOST -no-prec-div"

Do not make on multiple CPU, errors if used.

make

The make check will give you a LOT of errors. But, the more RAM memory you have available, the less errors you will get. And if you launch tests multiple times, you will see that errors are coming randomly. The fact is that the test consist in allocating large band of memory or testing things that can interfere with others process. If the system cannot allocate the memory, or if another process is perturbing the test, you will get errors. This do no means that your build failed.

make install


glib


cd glib-2.4.8
./configure CC=gcc --prefix=/soft/glib-2.4.8
make -j 4
make check
make install


libsigc++


cd libsigc++-2.3.1
./configure CC=gcc --prefix=/soft/libsigc++-2.3.1
make -j 4
make check
make install


glibmm


cd glibmm-2.4.8
export PKG_CONFIG_PATH=/soft/glib-2.4.8/lib/pkgconfig:/soft/libsigc++-2.3.1/lib/pkgconfig

Adding #include <cstring> in file glib/glibmm/propertyproxy_base.cc (cf http://gcc.gnu.org/gcc-4.3/porting_to.html, error: 'strcmp' was not declared in this scope)

./configure CC=gcc --prefix=/soft/glibmm-2.4.8 PKG_CONFIG_PATH=/soft/glib-2.4.8/lib/pkgconfig:/soft/libsigc++-2.3.1/lib/pkgconfig
make -j 4
make check
make install


libxml2


cd libxml2-2.7.8
./configure CC=gcc --prefix=/soft/libxml2-2.7.8
### /bin/rm: cannot remove `libtoolT': No such file or directory (OK)
make -j 4
make check

Adding http://www.w3.org/XML/Test/xmlts20080205.tar.gz for tests

make -k check

Error parsing html, test is buggy : http://www.mail-archive.com/blfs-dev@linuxfromscratch.org/msg10068.html Ignore it.

make install


curl


cd curl-7.22.0
./configure CC=gcc --prefix=/soft/curl-7.22.0
make -j 4
make check
### Can be long...
make install


openmpi


With GCC :

cd openmpi-1.4.5
./configure --prefix=/soft/openmpi-1.4.5 CC=gcc CXX=g++ F77=gfortran FC=gfortran
make -j 4
make check
make install

To install with PSM Infiniband support and Load Leveler Support, disable multithread :

./configure --prefix=/soft/openmpi/1.6.3 --disable-ft-thread --disable-mpi-thread-multiple --with-sge --with-openib --with-psm --with-verbs --with-loadleveler

With Intel :

cd openmpi-1.4.5
./configure --prefix=/soft/openmpi-1.4.5 CC=icc CXX=icpc F77=ifort FC=ifort
make -j 4
make check
make install

In both cases, do not forget to add PATH and LD_LIBRARY_PATH after to get access to openmpi wrappers and libraries :

export PATH=/soft/openmpi-1.4.5/bin:$PATH
export LD_LIBRARY_PATH=/soft/openmpi-1.4.5:$LD_LIBRARY_PATH


boost


cd boost_1_46_1

For MPI boost, add 'using mpi ;' (without the comma) anywhere in tools/build/v2/user-config.jam.

vim tools/build/v2/user-config.jam

For GCC (default for boost):

./bootstrap.sh --with-libraries=all --prefix=/soft/boost-1.46.1

For ICC intel:

./bootstrap.sh --with-libraries=all --prefix=/soft/boost-1.48.0 --with-toolset=intel-linux

For 1.46.0 and previous :

./bjam install

For 1.48.0 and next :

./b2 install

This last step can be long.To build boost fully static, you need to add arguments (the argument threading is not dedicated to static building, but it is here to make sure boost build parallel libraries):

./bootstrap.sh --with-libraries=all --prefix=$HOME/boost/1.53.0 --with-toolset=intel-linux link=static threading=multi runtime-link=static
./b2 install link=static threading=multi runtime-link=static

If you get this error :

cannot open source file "patchlevel.h"

or

cannot open source file "bz2.h"

It means you need to install python dev package and bzip2 dev package. If using a own built python or bzip2, then link the boost include with it.

tcl


If possible do not use the 8.6, I got errors, and I am not the only one.

cd unix
./configure......
make test
...


tk


Needs libx11-dev and xorg-dev (X libraries).

Tk should be installed in the same directory than tcl.

cd unix
./configure......
make test
...


tclx


cd unix
./configure --with-tcl=/soft/tcltk/8.5.14/lib --enable-shared --enable-static --prefix=/soft/tclx/8.4
make
make install

Now, you need a correct tclxConfig.sh file if you want to compile some libs like module. Note that tclx libs have been installed in the lib directory of tcltk. Put it in the same directory than the lib :cd /soft/tcltk/8.5.14/lib/tclx8.4/

vim tclxConfig.shAnd here is mine :

#
# tclxConfig.sh - This file is generated by the TclX configure script to
# assist in linking with TclX (libtclx.a).  It is a shell scripted designed to
# be sourced by configure scripts.  The system libraries defined in here
# need to be used in addition to those defined in tclConfig.sh.  See
# tclExtend.h for a full expanation of the version numbers.
#
# System: Linux-2.0.10
# Date:   Mon Aug 19 22:30:36 EDT 1996
#

#
# Version numbers for TclX (see tclExtend.h for details).
#
TCLX_FULL_VERSION='8.4.0'
TCLX_VERSION='8.4'

#
# Defines for cpp.
#
TCLX_DEFS=''

#
# Additional libraries added by TclX.
#
TCLX_LIBS=''

#
# String to pass to linker to pick up the TclX library from its
# build directory.
#
TCLX_BUILD_LIB_SPEC='-L/soft/tcltk/8.5.14/lib/tclx8.4 -ltclx8.4'

#
# String to pass to linker to pick up the TclX header from its
# installed directory.
#
TCLX_INCLUDE_SPEC='-I/soft/tclx/8.4/include'

#
# String to pass to linker to pick up the TclX library from its
# installed directory.
#
TCLX_LIB_SPEC='-L/soft/tcltk/8.5.14/lib/tclx8.4 -ltclx8.4'

#
# Search flags that specify how to find the TclX shared libraries at run time
# on some systems.
#
TCLX_LD_SEARCH_FLAGS=''


readline


Nothing particular, just configure, make, make check, make install.

zlib


Configure, make, make check, make install

hdf5


./configure --prefix=/soft/HDF5 --enable-parallel --enable-fortran --with-zlib=/usr/lib/x86_64-linux-gnu --enable-shared --enable-static CC=mpicc FC=mpif90

Note that (from documentation):

The parallel test, t_shapesame, in testpar/, may run for a long time and may be terminated by the alarm signal. If that happens, one can increase the alarm seconds (default is 1200 seconds = 20 minutes) by setting the environment variable, $HDF5_ALARM_SECONDS, to a larger value such as 3600 (60 minutes). Note that the t_shapesame test may fail in some systems (see the “While working on the 1.8.6 release…” problem below). If it does, it will waste more time if $HDF5_ALARM_SECONDS is set to a larger value. (AKC - 2011/05/07)For intel ICC, replace in the test Makefile mpiexec by mpirun if needed.To use HDF5, note that if C code can load the headers and the libraries in one line, Fortran cannot. You need to cut it in two commands.

mpif90 -c CFD-FIELD3.f90 -I /soft/HDF5/include
mpif90 CFD-FIELD3.o -o a.out -L/soft/HDF5/lib -lhdf5_fortran -lhdf5 -lz


Intel MPI Benchmarks


Very simple, just compile it and launch the executable in parallel, playing with parameters to choose the test you want. If none specified, it will run all (~20 min of run).

cd src
make -f make_mpich MPI_HOME=/soft/mpi/openmpi-1.4.3-qlc


modules


Very useful tool to help users solve dependency and library conflict problems. Should be used one every calculator with multiple users.

./configure --prefix=/soft/modules/3.2.10 --with-tcl-lib=/soft/tcl/8.5.13/lib --with-tcl-inc=/soft/tcl/8.5.13/include --disable-versioning --exec-prefix=/soft/modules/3.2.10/Modules --with-module-path=/soft/modules/3.2.10
make install

if you get :

checking for TclX version... configure: error: Must specify version (X.Y) if using this option
checking for Tcl version... configure: error: Must specify version (X.Y) if using this option
checking for TclX configuration (tclxConfig.sh)... not found

etc.Try using all arguments :

./configure --prefix=/soft/modules/3.2.10 --with-tcl-lib=/soft/tcltk/8.5.14/lib --with-tcl-inc=/soft/tcltk/8.5.14/include --disable-versioning --exec-prefix=/soft/modules/3.2.10/Modules --with-module-path=/soft/modules/3.2.10 --with-tcl=/soft/tcltk/8.5.14/lib --with-tcl-ver=8.5 --with-tclx=/soft/tcltk/8.5.14/lib/tclx8.4 --with-tclx-ver=8.4

Then, in /soft/modules/3.2.10/Modules/init/, copy bash to bash.sh so that the system do not thinks its bash bin, and create a loadmodule.sh file that contains :

export LD_LIBRARY_PATH=/soft/tcltk/8.5.14/lib/:/soft/tcltk/8.5.14/lib/tclx8.4/
source /soft/modules/3.2.10/Modules/init/bash.sh

Just need to source it after: source loadmodule.sh To enable the module alias, you need to source the module script.

cd /soft/modules/3.2.10/Modules/init

Copy the type wanted into the same name, but with '.s' at end (to prevent conflicts with the original binary). Let's say here we use bash :

cp ./bash ./bash.s

And now source it :

source bash.s

You can also add it to your bashrc to load it at each session.Then, to make a module, go into :

cd /soft/modules/3.2.10/Modules/modulefiles

And you can take a look at the files here for example. Note that :

**setenv** is like export to declare environment variable
**prepend-path** add your directory before the rest of the current variable
**append-path** add your directory after the rest of the current variable

Example :Let's say that we have :

echo $PATH
/usr/bin
echo $LD_LIBRARY_PATH
/usr/lib

The following module file :

proc ModulesHelp { } {
        global version        puts stderr "\tLoad GCC 4.6.3 version."
        puts stderr "\tSupport for C,C++,Fortran."
        puts stderr "\tNo Multilibs."
}module-whatis   "Load GCC 4.6.3 version."# for Tcl script use only
set     version      "3.2.10"conflict intel-11.1
prereq gmp-4.3.2setenv       GCCHOME          /soft/gcc-4.6.3prepend-path  PATH             /soft/gcc-4.6.3/bin
prepend-path  MANPATH          /soft/gcc-4.6.3/share/man
append-path  LD_LIBRARY_PATH  /soft/gcc-4.6.3/lib64setenv       COMPILER         gcc
setenv       COMPILER_VER     4.6.3
setenv       CC               gcc
setenv       CXX              g++
setenv       F77              gfortran
setenv       F90              gfortran
setenv       FC               gfortran

will give you :

echo $PATH
/soft/gcc-4.6.3/bin:/usr/bin
echo $LD_LIBRARY_PATH
/usr/lib:/soft/gcc-4.6.3/lib64
echo $GCCHOME
/soft/gcc-4.6.3

Do not forget that the system is using the first file it encounters that corresponds to the command. Here, files in /soft/gcc-4.6.3/bin will be used before the one in /usr/bin.Note also that you can add conflict and pre-requite. Here, if the module intel-11.1 is already loaded, then this module will refuse to load. If the module gmp-4.3.2 is not load, then it will also not accept to load.You can use the following commands :module avail : display all modules available on the system module list : list all module already loaded module display gcc-4.4.2 : display what the module gcc-4.4.2 will do module load gcc-4.4.2 : load the module gcc-4.4.2 module unload gcc-4.4.2 : unload the gcc-4.4.2 module swithc gcc-4.4.2 intel-11.1 : will unload gcc-4.4.2 and load intel-11.1

expat


Simple, just configure and make.

./configure --prefix=/soft/expat/2.1.0 CC=icc CXX=icpc F90=ifort
make
make check
make install

If you get this error :

-o xmlwf/unixfilemap.o -c xmlwf/unixfilemap.c
xmlwf/unixfilemap.c: In function ?filemap?:
xmlwf/unixfilemap.c:54: error: ?caddr_t? undeclared (first use in this function)
xmlwf/unixfilemap.c:54: error: (Each undeclared identifier is reported only once
xmlwf/unixfilemap.c:54: error: for each function it appears in.)
xmlwf/unixfilemap.c:54: error: expected ?)? before numeric constant
xmlwf/unixfilemap.c:55: error: too few arguments to function ?mmap?
xmlwf/unixfilemap.c:62: error: expected ?)? before ?p?
xmlwf/unixfilemap.c:62: error: too few arguments to function ?munmap?
make: *** [xmlwf/unixfilemap.o] Error 1

Then add

typedef __caddr_t caddr_t;

in xmlwf/unixfilemap.c, at line 20.

bzip2


make
make install PREFIX=/soft/bzip2/1.0.6


libtool


http://ftp.igh.cnrs.fr/pub/gnu/libtool/

./configure --prefix=/soft/libtool/2.4
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/libtool/2.4/lib:$LD_LIBRARY_PATH


icu


http://userguide.icu-project.org/

./configure --prefix=/soft/ICU/4.2 --enable-static=yes --enable-shared=yes
make
make install
export LD_LIBRARY_PATH=/soft/ICU/4.2/lib:$LD_LIBRARY_PATH


boost-icu


cd boost_1_48_0
vim tools/build/v2/user-config.jam

add “using mpi ;” at beginning of the file.

./bootstrap.sh --with-libraries=all --prefix=/soft/boost/1.48.0
./b2 -a -sICU_PATH=/soft/ICU/4.2 include=/soft/ICU/4.2/include/ install

Check that boost has enabled ISU support (at beginning of ./b2 output).

export LD_LIBRARY_PATH=/soft/boost/1.48.0/lib:$LD_LIBRARY_PATH


sqlite3


./configure --prefix=/soft/sqlite/3.7.16.2
make
make install
export LD_LIBRARY_PATH=/soft/sqlite/3.7.16.2/lib:$LD_LIBRARY_PATH


medusa


./configure --prefix=/home/toto/medusa LDFLAGS="-L/home/toto/libssh2/lib" CPPFLAGS="-I/home/toto/libssh2/include"
./medusa -h localhost -u be2012_1 -P /home/toto/john-1.7.9/run/password.lst -e ns -M ssh


libssh2


./configure --prefix=/home/myusername/medusa LDFLAGS="-L/home/myusername/libssh2/lib


John the Ripper


cd john-1.7.8-jumbo-2/src

uncomment the following lines in the Makefile:

CC = mpicc -DHAVE_MPI -DJOHN_MPI_BARRIER -DJOHN_MPI_ABORT`
MPIOBJ = john-mpi.o`
make linux-x86-64
    cd ../run
    ./john --test
mpirun -np 8 ./john --test


swig


./configure --with-python=/usr/bin/python --with-tcl=/soft/tcl/8.5.13/ --with-boost=/soft/boost/1.48.0/ --with-pcre-prefix=/soft/pcre/8.32/ --prefix=/soft/swig/2.0.9
make -j 4
make check
make install


pcre


./configure --enable-pcregrep-libz=/soft/zlib/1.2.7/lib/ --enable-pcregrep-libbz2=/soft/bzip2/1.0.6/lib/ --enable-pcre32 --enable-pcre16 --prefix=/soft/pcre/8.32
make -j 4
make check
make install
cd ..


valgrind


./configure --prefix=/soft/valgrind/3.8.1 --with-mpicc=mpicc
make
make check
make install


R


Note : need X headers to be built.

./configure --prefix=/soft/R/3.0.1

If you get an error :

configure: error: --with-readline=yes (default) and headers/libs are not available

Then you need to install readline libraries. If you get :

/soft/readline/6.2/lib/libreadline.so: undefined reference to `PC'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetflag'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetent'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `UP'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tputs'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgoto'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetnum'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `BC'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetstr'

You need to add ncurses libraries using -lncurses.Now it accepts to compile.

netcdf


./configure --with-hdf5=/soft/io/hdf5/1.8.11/ --with-zlib=/soft/system/zlib/1.2.8/ --enable-static --enable-shared --enable-netcdf4 --prefix=/soft/io/netcfd/4.1.1
make

A lot of :

../libtool: eval: line 7311: unexpected EOF while looking for matching `"'
../libtool: eval: line 7312: syntax error: unexpected end of file
../libtool: line 7312: warning: syntax errors in . or eval will cause future versions of the shell to abort as Posix requires

The libtool generated is the problem. Just remove it and create a link to your libtool :

 rm libtool; ln -s $(which libtool) libtool
make clean
make

You get a

/bin/sh: dvips: command not found

If you do not need the latex documentation, use

make -k

to bypass this step.

make check
make install


python setuptools


Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/setuptools/1.1.6/lib/python2.7/site-packages is not present in the PYTHONPATH variable.To install, it is easy :

python setup.py build
export PYTHONPATH=/soft/python/2.7.5-soft/setuptools/1.1.6/lib/python2.7/site-packages/:$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/setuptools/1.1.6

Test :

python
Python 2.7.5 (default, Sep 24 2013, 17:03:24) 
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
>>> print setuptools.__version__
0.6


gnu m4


./configure --enable-c++ --prefix=/softs/m4/1.4.17
make check
make install
export PATH=/softs/m4/1.4.17/bin:$PATH

Mathematics libraries


fftw


For GCC :

./configure --prefix=/soft/fftw-3.3.3 --enable-threads --enable-openmp --enable-mpi -enable-sse2
make -j 4
make check
make install

Or to integrate float support :

./configure --prefix=/soft/fftw/3.3.3-shared-float --enable-threads --enable-openmp --enable-mpi -enable-sse2 --enable-shared --enable-fortran --enable-float

For ICC intel :

./configure --prefix=/soft/fftw/3.3.3 --enable-threads --enable-openmp --enable-mpi -enable-sse2 CC=mpiicc FC=mpiifort CXX=mpiicpc MPICC=mpiicc


blas


Just extract and make. That's all, the lib is here. If needed, replace gcc by icc for intel.

lapack


Just copy one of the makefile inside the INSTALL directory at source folder root, and rename it as make.inc.

cd lapack-src
cp makefile.gcc .
mv makefile.gcc make.inc

Then compile blas and lapack :

cd lapack/BLAS/SRC
make
cd ../..
make

If you get errors, just compile manually the files causing troubles in TESTING/LIN, by changing the optimization flags (O3, O2, O1, O0, -g), then make, manual compile, make, etc. It can be long, be patient.

ScaLapack - Blacs


Best way is to go here http://www.netlib.org/scalapack/, and download the Scalapack installer python script. It will do the entire job, and documentation is well made. Note that you have to create the directory where to install libs after building yourself before running setup, even when specifying prefix.

mkdir /soft/ScaLAPACK/2.0.2
./setup.py --prefix=/soft/ScaLAPACK/2.0.2 --downall

You are done. Libs can be used using :

Your BLAS library is                     : -L/soft/ScaLAPACK/2.0.2/lib -lrefblas
Your LAPACK library is                   : -L/soft/ScaLAPACK/2.0.2/lib -ltmg -lreflapack
Your BLACS/ScaLAPACK library is          : -L/soft/ScaLAPACK/2.0.2/lib -lscalapack


numpy


For gcc :

python setup.py build --fcompiler=gnu95
python setup.py install --prefix=/soft/numpy/1.7.0
export $PYTHONPATH=/soft/numpy/1.7.0/lib/python2.7/site-packages/

For intel : see here : http://software.intel.com/en-us/articles/numpyscipy-with-intel-mkl. Untar, and cd into the extracted directory. Create a file name site.cfg, and past this into it (change PATH to match your mkl installation directory) :

[mkl]
library_dirs = /opt/intel/mkl/composer_xe_2013/lib/intel64
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =

Then, edit numpy/distutils/intelccompiler.py, and add the following optimizations to cc_exe by editing self.cc_exe :

self.cc_exe = 'icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost' 

Then edit the fortran configuration file (there is a fault on intel web site, an s is missing) numpy/distutils/fcompiler/intel.py and replace ifort call by :

ifort -xhost -openmp -fp-model strict -fPIC

Now, you can build and install, using intelem because we use an x64 system :

python setup.py config --compiler=intelem build_clib --compiler=intelem build_ext --compiler=intelem install --prefix=/soft/python/2.7.5-soft/numpy/1.7.0

Don't forget to add numpy into your PYTHONPATH :

export PYTHONPATH=/soft/numpy/1.7.0/lib/python2.7/site-packages/:$PYTHONPATH

Test :

python
Python 2.7.5 (default, Sep 24 2013, 17:03:24) 
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> print numpy.__version__
1.7.0


scipy


If numpy is in your PYTHONPATH, you just need to build and install it this way :

python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem --fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem install --prefix=/soft/scipy/0.12.0

And add it into your PYTHONPATH :

export PYTHONPATH=/soft/scipy/0.12.0/lib/python2.7/site-packages/:$PYTHONPATH

Test :

python
Python 2.7.5 (default, Sep 24 2013, 17:03:24) 
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>> print scipy.__version__
0.12.0


gsl


./configure --prefix=/softs/gsl/1.16 CC=icc --enable-shared
make -j 4
make check
make install


Physic libraries


pyevolve


Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/pyevolve/0.6rc1/lib/python2.7/site-packages is not present in the PYTHONPATH variable. You also need setuptools in your PYTHONPATH. If not, you may encounter :

Traceback (most recent call last):
  File "setup.py", line 1, in <module>
    from setuptools import setup, find_packages
ImportError: No module named setuptools

To install, it is easy :

python setup.py build
export PYTHONPATH=/soft/python/2.7.5-soft/pyevolve/0.6rc1/lib/python2.7/site-packages/:$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/pyevolve/0.6rc1

Test :

python
Python 2.7.5 (default, Sep 24 2013, 17:03:24) 
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyevolve
>>> print pyevolve.__version__
0.6rc1


gdal


cd gdal-1.7.1
./configure CC=gcc --prefix=/soft/gdal-1.7.1

or to use external tiff (non system) :

./configure --prefix=/soft/gdal/1.9.2/ --with-libtiff=/soft/tiff/4.0.3/ --with-geotiff=/soft/geotiff/1.4.0/

or to use internal tiff (included in gdal)

./configure --prefix=/soft/gdal/1.9.2/ --with-libtiff=internal --with-geotiff=internal --with-rename-internal-libtiff-symbols=yes --with-rename-internal-libgeotiff-symbols=yes 
make -j 4
### no check available
make install


crac


./configure --prefix=/soft/crac CC=icc CXX=icpc FC=ifort CFLAGS="-g -O2 -std=c99" CPPFLAGS="-Wall -ansi -funroll-loops -O2 -DNDEBUG" --enable-exact-match-tool
make

You get the following error :

./seqan/platform.h(23): error: invalid combination of type specifyrs
  typedef int64_t __int64;

The variable already exist with icpc, just comment the line and that's done.

openKIM


IMPORTANT : the following variable MUST be defined, even when null. If not, the install thinks it means “yes”. No make install, just copy the folder where you want the lib to be, and compile here.

export KIM_INTEL=
export KIM_SYSTEM32=
export KIM_DYNAMIC=yes
export KIM_DIR=/soft/openkim....
cd $KIM_DIR
make clean
make examples
make
make all

To compile with INTEL :

export KIM_INTEL="yes"


mira


(Mira cannot be compiled with intel &#139; 12.1, no worth try)
To compile with shared libraries :

./configure --prefix=/soft/mira/3.4.1.1 --enable-debug=yes --with-boost=/soft/boost/1.53.0/ --with-expat=/soft/expat/2.1.0 --with-tcmalloc-dir=/soft/google-perftools/1.8.3/lib --enable-boundtracking=yes --enable-bugtracking=yes --enable-extendedbugtracking=no --with-tcmalloc CC=icc CXX=icpc

To make mira full static :

./configure --prefix=/soft/mira/3.4.1.1 --enable-debug=yes --with-boost=/soft/boost/1.53.0/ --with-expat=/soft/expat/2.1.0 --with-tcmalloc-dir=/soft/google-perftools/1.8.3/lib --enable-boundtracking=yes --enable-bugtracking=yes --enable-extendedbugtracking=no --with-tcmalloc --enable-shared=no --enable-static=yes --enable-mirastatic CC=icc CXX=icpc

Then :

make
make check
make install

If it says that it cannot link with expat, check inside the config.log. In my case, bz2 lib was missing and the configure was buggy, generating this error, even with expat correctly linked. I built bz2, and added to configure :

CFLAGS="-L/soft/bzip2/1.0.6/lib" CXXFLAGS="-L/soft/bzip2/1.0.6/lib"

If you get this error :

 undefined reference to `clock_gettime'

This means you need to add “-lrt” at the END of the compilation line. For mira, I had to go in src/progs, then add -lrt at the end of LIBS. Then make inside the directory, and go back to top source and make.

vasp


A big one. First, to patch Vasp with VTST, download the vtstcode.tar.gz tarball, then extract its content inside vasp directory. Beware, it will replace some vasp files, backup vasp sources before doing this operation. Then, find the variable SOURCE in the Vasp Makefile, and add the following objects BEFORE chain.o:

bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o fire.o lanczos.o neb.o qm.o opt.o

Note that you also need to edit main.F, and replace

      CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
           LATT_CUR%A,LATT_CUR%B,IO%IU6)

by

      CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
           TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

To make it clean, you also have to edit some files when you get the warning :

dimer.F(79): warning #5117: Bad # preprocessor line
     #if defined(MPI_CHAIN)

And make sure that the preprocessing commands (#….) are stick to the beginning of the line (no spaces between the # and the beginning of the line). Then :

make -f makefile.mymakefile

And you get the vasp binary file. Note that in my case, I added the flag -DMPI and I used the mpiifort compiler to compile everything. I never used the MPI dedicated part in the default makefile.

proj


http://trac.osgeo.org/proj/

./configure --prefix=/soft/proj/4.8.0
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/proj/4.8.0/lib:$LD_LIBRARY_PATH


gdal-ogr


./configure --prefix=/soft/gdal/1.9.2/ --enable-shared --enable-static --with-ogr 
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/gdal/1.9.2/lib:$LD_LIBRARY_PATH


mapnik


A big one. I will give here the full installation procedure I used (Do not forget the LD_LIBRARY_PATH export, if not, mapnik will complain about missing libs, even if you specified them on its configure command line) :
Dependencies to be installed : libtool 2.4, libicuuc 4.2, Boost 1.48.0 with all libraries and ICU support, libproj 4.8.0, gdal 1.9.2 with ogr, sqlite3 3.7.16.2

./configure BOOST_INCLUDES=/soft/boost/1.48.0/include/ BOOST_LIBS=/soft/boost/1.48.0/lib/ PROJ_LIBS=/soft/proj/4.8.0/lib/ PROJ_INCLUDES=/soft/proj/4.8.0/include/ ICU_LIBS=/soft/ICU/4.2/lib/ ICU_INCLUDES=/soft/ICU/4.2/include/ LTDL_INCLUDES=/soft/libtool/2.4/include/ LTDL_LIBS=/soft/libtool/2.4/lib/ GDAL_CONFIG=/soft/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=/soft/sqlite/3.7.16.2/include SQLITE_LIBS=/soft/sqlite/3.7.16.2/lib PREFIX=/soft/mapnik/2.1.0 PYTHON_PREFIX=/soft/mapnik/2.1.0 TIFF_INCLUDES=/soft/tiff/3.9.5/include/ TIFF_LIBS=/soft/tiff/3.9.5/lib

The mapnik 2.1.0 did not compiled with boost 1.53.0, the one recommended (1.48.0) works well.Note also that if you want to compile mapnik 2.0.2 or mapnik 2.0.0, and you want to use an external libtool (i.e. not in /usr/lib), there is no available flags. Trick is to “create” a shortcut to the compiler, because even CUSTOM_CXXFLAGS and CUSTOM_LDFLAGS do not work for ltdl. To finish, if you want to use the ogm plugin from gdal, you must use the 2.0.0 version. The others (> 2.0.0) will give you a “Notice: dependencies not met for plugin 'osm', not building…” and will fail to build it.

mkdir $HOME/bin
vim $HOME/bin/gccmapnik
#!/bin/bash
gcc "-I/soft/libtool/2.4/include/" "-L/soft/libtool/2.4/lib/" "$@"
vim $HOME/bin/g++mapnik
#!/bin/bash
g++ "-I/soft/libtool/2.4/include/" "-L/soft/libtool/2.4/lib/" "$@"
export PATH=$HOME/bin:$PATH

and now, compile with :

./configure CXX=g++mapnik CC=gccmapnik BOOST_INCLUDES=/soft/boost/1.48.0/include/ BOOST_LIBS=/soft/boost/1.48.0/lib/ PROJ_LIBS=/soft/proj/4.8.0/lib/ PROJ_INCLUDES=/soft/proj/4.8.0/include/ ICU_LIBS=/soft/ICU/4.2/lib/ ICU_INCLUDES=/soft/ICU/4.2/include/ GDAL_CONFIG=/soft/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=/soft/sqlite/3.7.16.2/include SQLITE_LIBS=/soft/sqlite/3.7.16.2/lib PREFIX=/soft/mapnik/2.0.2 PYTHON_PREFIX=/soft/mapnik/2.0.2


otb


OTB is a huge toolbox, difficult to compile if you do not meet the exact required versions of libraries. You have to tune some files, because Cmake installation is buggy with some tools. Here are the details of its installation. First thing is to get a functional boost, gdal and mapnik installation. You need an ICU compatible boost, mapnik 2, and gdal. You need to use gdal internal tiff because it is Bigtiff compatible. This is extremly important for OTB because Bigtiff allow >3.5Gb tiff files, which normal tiff lib does not allow. Due to this, you need to compile the whole chain with the gdal internal libs to prevent errors. Note that once the gdal lib is built, it contains symbols of zlib, libjpeg, libpng, libtiff and libgtiff.Here is the installation script I made to install OTB :

#
# OTB 3.16 Automatic installation script
#      Benoit Leveugle, ASA
#
#
# Requirements : gcc >= 4.4.x, gmake >= 3.80, freetype2, cmake
#
# Softs installed : libtool 2.4.2, icu 4.2.1, sqlite 3.7.16.2
#                   proj 4.8.0, expat 2.1.0, gdal 1.9.2 (with internal bigtiff, geotiff, png, jpeg, zlib)
#                   bzip2 1.0.6, boost 1.48.0 (with ICU support), mapnik 2.0.0, fltk 1.3.2, OTB 3.16
#
# stop if an error occur
# activate only if errors appends during the process, if not, do not activate because of possible errors in mkdir or rm
# set -e
tar xvzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure --prefix=$HOME/GeoRoot/libtool/2.4.2 --enable-shared --enable-static
make
make check
make install
export PATH=$HOME/GeoRoot/libtool/2.4.2/bin:$PATH
export LD_LIBRARY_PATH=$HOME/GeoRoot/libtool/2.4.2/lib:$LD_LIBRARY_PATH
cd ..
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf icu4c-4_2_1-src.tgz
cd icu/source
./configure --prefix=$HOME/GeoRoot/ICU/4.2 --enable-static=yes --enable-shared=yes
make
make check -j 16
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/ICU/4.2/lib:$LD_LIBRARY_PATH
cd ../..
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf sqlite-autoconf-3071602.tar.gz
cd sqlite-autoconf-3071602
./configure --prefix=$HOME/GeoRoot/sqlite/3.7.16.2 --enable-shared --enable-static
make -j 8
make install
export LD_LIBRARY_PATH=$HOME//GeoRoot/sqlite/3.7.16.2/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf proj-4.8.0.tar.gz
cd proj-4.8.0
./configure --help
./configure --prefix=$HOME/GeoRoot/proj/4.8.0 --enable-shared --enable-static
make -j 16
make check -j 16
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/proj/4.8.0/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf expat-2.1.0.tar.gz
cd expat-2.1.0
./configure --prefix=$HOME/GeoRoot/expat/2.1.0 --enable-shared --enable-static
make -j 16
make check -j 8
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/expat/2.1.0/lib:$LD_LIBRARY_PATH
export PATH=$HOME/GeoRoot/expat/2.1.0/bin:$PATH
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf gdal-1.9.2.tar.gz
cd gdal-1.9.2
./configure --prefix=$HOME/GeoRoot/gdal/1.9.2 --with-libtiff=internal --with-geotiff=internal --with-ogr \
--with-libz=internal --with-sqlite3=$HOME/GeoRoot/sqlite/3.7.16.2 --with-expat=$HOME/GeoRoot/expat/2.1.0 \
--with-static-proj4=$HOME/GeoRoot/proj/4.8.0/lib --with-png=internal --with-jpeg=internal CPPFLAGS=-I$HOME/GeoRoot/proj/4.8.0/include
make -j 16
make install
cd ../
export LD_LIBRARY_PATH=$HOME/GeoRoot/gdal/1.9.2/lib:$LD_LIBRARY_PATH
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
mkdir $HOME/GeoRoot/lib
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libz.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libpng.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libjpeg.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libtiff.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libgtiff.so
export LD_LIBRARY_PATH=$HOME/GeoRoot/lib:$LD_LIBRARY_PATH
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
mkdir $HOME/GeoRoot/include
cd gdal-1.9.2
cp port/* $HOME/GeoRoot/include
cp frmts/gtiff/* $HOME/GeoRoot/include
cp frmts/gtiff/libtiff/* $HOME/GeoRoot/include
cp frmts/gtiff/libgeotiff/* $HOME/GeoRoot/include
cp frmts/png/libpng/* $HOME/GeoRoot/include
cp frmts/jpeg/libjpeg/* $HOME/GeoRoot/include
cp frmts/zlib/* $HOME/GeoRoot/include
cd ../
tar xvzf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make install PREFIX=$HOME/GeoRoot/bzip2/1.0.6
export LD_LIBRARY_PATH=$HOME/GeoRoot//bzip2/1.0.6/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf boost_1_48_0.tar.gz
cd boost_1_48_0
./bootstrap.sh --with-libraries=all --prefix=$HOME/GeoRoot/boost/1.48.0
./b2 -a -sICU_PATH=$HOME/GeoRoot/ICU/4.2 include=$HOME/GeoRoot/ICU/4.2/include/ install --without-mpi
cd ../
export LD_LIBRARY_PATH=$HOME/GeoRoot/boost/1.48.0/lib:$LD_LIBRARY_PATH
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf mapnik-2.0.0.tar.gz
cd mapnik-2.0.0
mkdir $HOME/GeoRoot/bin
rm $HOME/GeoRoot/bin/g*
echo "#!/bin/bash" >> $HOME/GeoRoot/bin/gccmapnik
echo 'gcc "-I$HOME/GeoRoot/libtool/2.4.2/include/ -I$HOME/GeoRoot/include" "-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib" "$@" \
"-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib"' >> gccmapnik
echo "#!/bin/bash" >> $HOME/GeoRoot/bin/g++mapnik
echo 'g++ "-I$HOME/GeoRoot/libtool/2.4.2/include/ -I$HOME/GeoRoot/include" "-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib" "$@" \
"-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib"' >> g++mapnik
export PATH=$HOME/GeoRoot/bin:$PATH
./configure CXX=g++mapnik CC=gccmapnik BOOST_INCLUDES=$HOME/GeoRoot/boost/1.48.0/include/ BOOST_LIBS=$HOME/GeoRoot/boost/1.48.0/lib/ \
PROJ_LIBS=$HOME/GeoRoot/proj/4.8.0/lib/ PROJ_INCLUDES=$HOME/GeoRoot/proj/4.8.0/include/ ICU_LIBS=$HOME/GeoRoot/ICU/4.2/lib/ \
ICU_INCLUDES=$HOME/GeoRoot/ICU/4.2/include/ LTDL_INCLUDES=$HOME/GeoRoot/libtool/2.4.2/include/ LTDL_LIBS=$HOME/GeoRoot/libtool/2.4.2/lib/ \
GDAL_CONFIG=$HOME/GeoRoot/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=$HOME/GeoRoot/sqlite/3.7.16.2/include SQLITE_LIBS=$HOME/GeoRoot/sqlite/3.7.16.2/lib \
PREFIX=$HOME/GeoRoot/mapnik/2.0.0 PYTHON_PREFIX=$HOME/GeoRoot/mapnik/2.0.0 TIFF_INCLUDES=$HOME/GeoRoot/include/ TIFF_LIBS=$HOME/GeoRoot/lib \
JPEG_INCLUDES=$HOME/GeoRoot/include/ JPEG_LIBS=$HOME/GeoRoot/lib PNG_INCLUDES=$HOME/GeoRoot/include/ PNG_LIBS=$HOME/GeoRoot/lib
python scons/scons.py
python scons/scons.py install
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf fltk-1.3.2-source.tar.gz
cd fltk-1.3.2
 ./configure --prefix=$HOME/GeoRoot/fltk/1.3.2 --enable-shared --enable-threads --enable-static
make
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/fltk/1.3.2/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export  PATH=$PATH" > state.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf OTB-3.16.tgz
mkdir OTB-build
cd OTB-build/
#cp ../OTB-3.16/CMake/ImportBoost.cmake.bkp ../OTB-3.16/CMake/ImportBoost.cmake; rm -Rf *
rm -Rf *
rm CMakeCache.txt; touch CMakeCache.txt
echo "CMAKE_INSTALL_PREFIX:PATH=$HOME/GeoRoot/OTB-3.16" >> CMakeCache.txt
echo "EXPAT_INCLUDE_DIR:PATH=$HOME/GeoRoot/expat/2.1.0/include" >> CMakeCache.txt
echo "EXPAT_LIBRARY:FILEPATH=$HOME/GeoRoot/expat/2.1.0/lib/libexpat.so" >> CMakeCache.txt
echo "FLTK_BASE_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk.so" >> CMakeCache.txt
echo "FLTK_CONFIG_SCRIPT:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/bin/fltk-config" >> CMakeCache.txt
echo "FLTK_DIR:PATH=$HOME/GeoRoot/fltk/1.3.2" >> CMakeCache.txt
echo "FLTK_FLUID_EXECUTABLE:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/bin/fluid" >> CMakeCache.txt
echo "FLTK_FORMS_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_forms.so" >> CMakeCache.txt
echo "FLTK_GL_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_gl.so" >> CMakeCache.txt
echo "FLTK_IMAGES_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_images.so" >> CMakeCache.txt
echo "FLTK_INCLUDE_DIR:PATH=$HOME/GeoRoot/fltk/1.3.2/include" >> CMakeCache.txt
echo "FLTK_MATH_LIBRARY:FILEPATH=/usr/lib64/libm.so" >> CMakeCache.txt
echo "GDAL_CONFIG:FILEPATH=$HOME/GeoRoot/gdal/1.9.2/bin/gdal-config" >> CMakeCache.txt
echo "GDAL_INCLUDE_DIR:PATH=$HOME/GeoRoot/gdal/1.9.2/include" >> CMakeCache.txt
echo "GDAL_LIBRARY:FILEPATH=$HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so" >> CMakeCache.txt
echo "GEOTIFF_INCLUDE_DIRS:PATH=$HOME/GeoRoot/include" >> CMakeCache.txt
echo "JPEG_INCLUDE_DIRS:PATH=$HOME/GeoRoot/include" >> CMakeCache.txt
echo "OGR_INCLUDE_DIRS:PATH=$HOME/GeoRoot/gdal/1.9.2/include" >> CMakeCache.txt
echo "Boost_INCLUDE_DIR:PATH=$HOME/GeoRoot/boost/1.48.0/include" >> CMakeCache.txt
echo "OTB_USE_EXTERNAL_BOOST:BOOL=ON" >> CMakeCache.txt
echo "MAPNIK_INCLUDE_DIR:PATH=$HOME/GeoRoot/mapnik/2.0.0/include" >> CMakeCache.txt
echo "MAPNIK_LIBRARY:FILEPATH=$HOME/GeoRoot/mapnik/2.0.0/lib64/libmapnik2.so" >> CMakeCache.txt
echo "OTB_USE_MAPNIK:BOOL=ON" >> CMakeCache.txt
echo "LTDL_INCLUDE_DIR:PATH=$HOME/GeoRoot/libtool/2.4.2/include" >> CMakeCache.txt
echo "LTDL_LIBRARY:FILEPATH=$HOME/GeoRoot/libtool/2.4.2/lib/libltdl.so" >> CMakeCache.txt
echo "ICUUC_INCLUDE_DIR:PATH=$HOME/GeoRoot/ICU/4.2/include/" >> CMakeCache.txt
echo "ICUUC_LIBRARY:FILEPATH=$HOME/GeoRoot/ICU/4.2/lib/libicule.so" >> CMakeCache.txt
echo "CMAKE_CXX_FLAGS:STRING=-I$HOME/GeoRoot/proj/4.8.0/include/" >> CMakeCache.txt
echo "CMAKE_C_FLAGS:STRING=-I$HOME/GeoRoot/proj/4.8.0/include/" >> CMakeCache.txt
# PATCH BOOST
sed -i '9d' ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "1i\SET( GEODIR \"$HOME\")" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_SUBMINOR_VERSION \"\${Boost_VERSION} % 100\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_MINOR_VERSION \"\${Boost_VERSION} \/ 100 % 1000\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_MAJOR_VERSION \"\${Boost_VERSION} \/ 100000\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIB_VERSION \"1_48\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_VERSION \"104800\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIBRARIES_DIRS \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/lib\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIBRARIES \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/lib\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_INCLUDE_DIR \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/include\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_INCLUDE_DIRS \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/include\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_FOUND TRUE)/" ../OTB-3.16/CMake/ImportBoost.cmake
# PATCH MAPNIK
# sed -i '30,48d' ../OTB-3.16/Code/Common/otbVectorDataStyle.cxx
# sed -i '47d' ../OTB-3.16/Code/Common/otbVectorDataStyle.cxx
# PATCH MAPNIK V2
sed -i '82d' ../OTB-3.16/CMake/ImportMapnik.cmake
cmake ../OTB-3.16
make -j 16
make install
# Saving final state
rm state.txt
echo "export  PATH=$PATH" > finalstate.txt
echo "export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> finalstate.txt

If you get :

 WARNING: Target "cmTryCompileExec" requests linking to directory "/soft/gdal/1.9.2/lib".  Targets may link only to libraries.  CMake is dropping the item.

It means you did not specify the exact lib position, but only it's directory. Cmake is waiting for the exact path (ending with libxxxx.so).If you get :

 CMake Warning at CMake/ImportGdal.cmake:206 (MESSAGE):
   CHECK_XTIFFOPEN_SYMBOL test failed : your platform exhibits a gdal/geotiff
   conflict.  Opening a TIF file may generate a crash.  This is most probably
   because the gdal library you configuredembeds its own version of libgeotiff
   and is ABI incompatible with the system libgeotiff   You might consider building GDAL yourself without using
   --with-hide-internal-symbols and pointing GEOTIFF_INCLUDE_DIRS to the
   geotiff headers included in gdal sources
 Call Stack (most recent call first):
   CMakeLists.txt:214 (INCLUDE) CMake Error at CMake/ImportFLTK.cmake:48 (MESSAGE):
   Cannot build OTB project without FLTK.  Please set FLTK_DIR or set
   OTB_USE_EXTERNAL_FLTK OFF to use INTERNAL FLTK.
 Call Stack (most recent call first):
   CMakeLists.txt:219 (INCLUDE)

It means you builded some part of your system with another lib than the one provided by gdal. This can be done, but this is not a good idea on the long term. You might obtain corrupted files with OTB (I got some).If you get :

 CMake Error at CMake/ImportBoost.cmake:18 (MESSAGE):
   Cannot build OTB project without boost library.  Please set Boost
   directories or set OTB_USE_EXTERNAL_BOOST to OFF to use the INTERNAL Boost
   version
 Call Stack (most recent call first):
   CMakeLists.txt:222 (INCLUDE)
 CMake Warning at CMake/ImportBoost.cmake:14 (MESSAGE):
   Boost >= 1.35 is required.  Disabling OTB_USE_EXTERNAL_BOOST
 Call Stack (most recent call first):
   CMakeLists.txt:222 (INCLUDE)

But you have specified boost dir. It is because the cmake boost detection file is buggy. See the script I gave before, the trick to solve this is described under “Boost Patch”.If you get :

[ 95%] [ 95%] Building CXX object Code/Common/CMakeFiles/OTBCommon.dir/otbWriterWatcherBase.cxx.o
Building CXX object Code/Common/CMakeFiles/OTBCommon.dir/otbVectorDataStyle.cxx.o
In file included from /home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:20:0:
/soft/mapnik/2.1.0/include/mapnik/filter_factory.hpp:1:2: warning: #warning "filter_factory.hpp" is now called "expression.hpp" [-Wcpp]
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:31:9: error: ‘rule_type’ in namespace ‘mapnik’ does not name a type
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:32:8: error: ‘filter_ptr’ in namespace ‘mapnik’ does not name a type
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:36:8: error: ‘shared_ptr’ does not name a type
...

See in the script given before. You have to edit the cmake file that detect mapnik, and force the mapnik version 2. (even with your version 2, it will detect 0.7 version, so you have force it).

gromacs


./configure --prefix=/home/toto/TEST/gromacs-bin --enable-float --disable-shared --enable-mpi --program-suffix=_mpi CPPFLAGS="-I/soft/fftw/3.3.3-shared/include" LDFLAGS="-L/soft/fftw/3.3.3-shared/lib"

If you are installing GROMACS using the Installation Instructions from Gromacs and encounter “ can't find fftw3f library ”, this is probably due to wrong precision being used. Try reconfiguring FFTW with the following settings “–enable-float”

gerris


First get Mesa (more informations here : http://gfs.sourceforge.net/wiki/index.php/Standalone_OSMesa):

wget ftp://ftp.freedesktop.org/pub/mesa/7.8.2/MesaLib-7.8.2.tar.bz2
tar xjvf MesaLib-7.8.2.tar.bz2

And build it as a stand alone (prefix is non standard but Gerris needs it) and add some modifications. Use Gcc 4.8 minimum to get performances :

./configure --prefix=/softs/GERRIS/ --with-driver=osmesa --with-osmesa-bits=32 --disable-egl --enable-shared --enable-64-bit CC=gcc CXX=g++
make
make install
ln -s /softs/GERRIS/lib/libOSMesa32.so.7 /softs/GERRIS/lib/libOSMesa.so.7
export LD_LIBRARY_PATH=/softs/GERRIS/lib:$LD_LIBRARY_PATH

Now build gts, then gerris, then gfsview. Again, prefer gcc 4.8.x minimum to get performances (Gerris is non compatible with intel 12). MPT library was used here, but this should work with openmpi also :

./configure --prefix=/soft/GERRIS/ --enable-shared --enable-static CC=gcc CFLAGS=" -march=native -mtune=native -O2 "
make clean; make
make check
make install
./configure --enable-shared --enable-static --prefix=/soft/GERRIS/ CC=mpicc CFLAGS=" -march=native -mtune=native -O2 " FC=mpif90 FFLAGS=" -march=native -mtune=native -O2 " F77=mpif90 FCLAGS=" -march=native -mtune=native -O2 " PKG_CONFIG_PATH=/soft/GERRIS/lib/pkgconfig/
make
make install
./configure --enable-shared --enable-static --prefix=/soft/GERRIS/ CC=mpicc CFLAGS=" -march=native -mtune=native -O2 " PKG_CONFIG_PATH=/soft/GERRIS/lib/pkgconfig/
make
make install

metis


Download Metis 5.0.2, extract and build it (both static and shared libraries) :

wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.0.2.tar.gz
tar xvzf metis-5.0.2
cd metis-5.0.2
make config cc=mpicc prefix=/soft/metis/5.0.2
make
make install
make config shared=1 cc=mpicc prefix=/soft/metis/5.0.2
make
make install

telemac


Python install. First, download and install Metis. (see just above)
Now, download and extract telemac (extract the tar.gz directly where to install the soft, here /softs/telemac), then go in configs directory :

cd /softs/telemac/V6P3R2/configs/

Add the following file we call systel.hpc.cfg :

[Configurations]
configs:    hpc
[general]
root:       /softs/telemac/V6P3R2
version:    v6p3
language:   2
modules:    update system -dredgesim
options:
#
mods_all:   -I <config>
#
sfx_zip:    .gztar
sfx_lib:    .a
sfx_obj:    .o
sfx_mod:    .mod
sfx_exe:
#
val_root:   <root>/examples
val_rank:   all
 
# _____                          ___________________________________
# ____/ Redhat 6.4 + intel 14.0.2 + openmpi 1.6.5 _________________/
[hpc]
#
options:    parallel mpi
#
par_cmdexec:   <config>/partel < PARTEL.PAR >> <partel.log>
#
mpi_cmdexec:   /softs/intel-14.x-soft/system/openmpi/1.6.5/bin/mpiexec --hostfile /scratch/mylogin/hostfile.txt -wdir <wdir> -n <ncsize> <exename>
mpi_hosts:
#
cmd_obj:     /softs/wrapper/mpif90 -c -O2 -DHAVE_MPI -convert big_endian <mods> <incs> <f95name>
cmd_lib:    ar cru <libname> <objs>
cmd_exe:    /softs/wrapper/mpif90 -convert big_endian -lpthread -v -lm -o <exename> <objs> -L/scratch/leveugleb <libs>
#
incs_parallel:      -I /softs/intel-14.x-soft/system/openmpi/1.6.5/include
libs_partel:        /softs/metis/5.0.2/lib/libmetis.a
libs_all       :    /softs/intel-14.x-soft/system/openmpi/1.6.5/lib/libmpi.so
#

Note : in your configuration, /softs/wrapper/ should also be /softs/intel-14.x-soft/system/openmpi/1.6.5/bin/.

The trick : to be able to run Telemac on a cluster with a job scheduler, we will pass the hostfile provided by the job scheduler directly to the mpiexec command. The hostfile will be generated in the jobscheduler script for submitting job and stored in a shared directory, here the user's scratch. (see after for the example).

Now, export 2 variables, the position of the configuration file we made, and the position of the python executables of telemac :

export PATH=/softs/telemac/V6P3R2/scripts/python27/:$PATH
export SYSTELCFG=/softs/telemac/V6P3R2/configs/systel.hpc.cfg

Then compile Telemac, can take a while.

compileTELEMAC.py

If everything went well, you should finally get “My work is done”. Telemac is ready, now let's configure the script for job submission. In your project directory, create the file (WARNING, here the jobscheduler is LoadLeveler, adapt the script to yours) :

#!/bin/sh
# Script de soumission Loadleveler pour un job Intel MPI
 
# @ job_name = TELEMAC
# @ output = $(job_name).out
# @ error  = $(job_name).err
# @ class = intel
# @ account_no = myaccount	
# @ job_type = mpich
# @ node = 1
# @ total_tasks = 8
 
# @ environment = COPY_ALL
# @ wall_clock_limit = 00:10:10,00:10:01
# @ queue
 
module load intel-14.0.2 openmpi-1.6.5-intel 
 
export PATH=/softs/telemac/V6P3R2/scripts/python27/:$PATH
export SYSTELCFG=/softs/telemac/V6P3R2/configs/systel.hpc.cfg
 
# Here, wa ask the jobscheduler to write host list into a file, shared by all nodes
cat $LOADL_HOSTFILE > /scratch/mylogin/hostfile.txt
 
echo ""
echo "I am running on :"; hostname
echo ""
 
cd /scratch/mylogin/examples/tomawac/bottom_friction/
# Patch for libnuma (see after)
ln -s /usr/lib64/libnuma.so.1 /scratch/mylogin/libnuma.so
export LD_LIBRARY_PATH=/scratch/mylogin/:$LD_LIBRARY_PATH
 
tomawac.py tom_frot_T_V5P6.cas
 
 
rm /scratch/mylogin/hostfile.txt
rm /scratch/mylogin/libnuma.so

Note : because Telemac compile an executable before launching on calculation nodes of the cluster, I missed libnuma.so coming with a devel package (not installed on calculation nodes, for performances). This libnuma.so was only a link to /usr/lib64/libnuma.so.1 which was already installed for runtime on calculation nodes. The trick here is to create a link and the destroy it after runtime.

That's all, now you can use Telemac this way, and the only interaction with the jobscheduler is the creation of the hostsfile.

Rendering libraries


matplotlib


Do not use intel compiler, you may encounter errors, prefer gcc because we do not need extreme performances here. Note that if it says “cannot resolve https://...” it means your python have no ssl support, which is needed to download packages. See the installation of openssl and python above. Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages is not present (you have to mkdir it yourself) and if the PYTHONPATH variable do not have this directory also.

python setup.py build
mkdir /soft/python/2.7.5-soft/matplotlib
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages
export PYTHONPATH=/soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages:/$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/matplotlib/1.3.0

Test :

python
Python 2.7.5 (default, Sep 24 2013, 17:03:24) 
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print matplotlib.__version__
1.3.0

And you are good to go.

flex


./configure --prefix=/soft/flex/2.5.37 CC=icc CXX=icpc

If you are working on a calculator, latex packages may not be available, and you will encounter the following error :

make[2]: Entering directory `$HOME/flex-2.5.37/doc'
TEXINPUTS=".:$TEXINPUTS" \
	MAKEINFO='/bin/sh $HOME/flex-2.5.37/missing --run makeinfo   -I .' \
	texi2dvi --pdf --batch flex.texi
/bin/sh: texi2dvi: command not found
make[2]: *** [flex.pdf] Error 127

Just by-pass it, making a false binary :

mkdir $HOME/bin
cd $HOME/bin
vim texi2dvi.f90

Past the following text :

program texi2dvi
print *,"Fake Latex !!!"
end program texi2dvi

Save an compile :

gfortran texi2dvi.f90 -o texi2dvi
# Add to path :
export PATH=$HOME/bin:$PATH

Relaunch make, its ok now. To install, just add a fake pdf file in doc :

touch $HOME/flex-2.5.37/doc/flex.pdf
make install


gnuplot


To compile it, try to connect using ssh -X if you work on a remote server. The make check needs X11 display.

./configure --prefix=/soft/gnuplot-4.6.1 --with-readline=gnu
make
make check
make install

If you need to specify readline (for auto-completion) :

./configure --prefix=/soft/gnuplot-4.6.1 --with-readline=/soft/readline-6.2


motif


http://downloads.sourceforge.net/project/motif/Motif%202.3.4%20Source%20Code/motif-2.3.4-src.tgz
./autogen.sh
./configure --prefix=/soft/motif/2.3.4 CC=gcc CFLAGS="-I/soft/xbitmaps/1.1.1/include/"

If you get the error :

error: X11/bitmaps/gray: No such file or directory

You need to install X11 bitmaps library, and specify its position.

freetype2


http://sourceforge.net/projects/freetype/files/freetype2/2.4.11/freetype-2.4.11.tar.gz
./configure --prefix=/soft/freetype/2.4.11
make
make check
make install


xpdf


Needs a lot of dependencies : X11 bitmaps, Motif and FreeType2.

./configure --prefix=/soft/xpdf/3.03 --with-freetype2-library=/soft/freetype/2.4.11/lib/ --with-freetype2-includes=/soft/freetype/2.4.11/include/freetype2/ --with-Xm-library=/soft/motif/2.3.4/lib/ --with-Xm-includes=/soft/motif/2.3.4/include/
make
make install

If you still get this error :

configure: WARNING: Couldn't find FreeType
configure: WARNING: -- You will be able to compile pdftops, pdftotext,
        pdfinfo, pdffonts, pdfdetach, and pdfimages, but not xpdf
        or pdftoppm

When looking inside the config.log, the error could be :

/soft/freetype/2.4.11/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory

In fact, freetype 2 includes are not in include, but in include/freetype2/ (see above).

X11 bitmaps


http://ftp.riken.jp/pub/X11/ftp.x.org/pub/individual/data/xbitmaps-1.1.1.tar.gz
./configure --prefix=/soft/xbitmaps/1.1.1
make
make install


fltk


./configure --prefix=/soft/fltk/1.3.2 --enable-shared --enable-threads
make -j 4
make install


geotiff


./configure --prefix=/soft/geotiff/1.4.0 --with-libtiff=/soft/tiff/4.0.3/ --with-proj=/soft/proj/4.8.0/


tiff


./configure --prefix=/soft/tiff/4.0.3