Figure out optimum gcc flags on a linux system using this script.
Some versions of gcc (2.95.4) will not compile jcdis.c++ with the -Wshadow flag, whereas newer versions (3.3.3) will.
JCDIS uses BLAS (Basic Linear Algebra Subprograms), LAPACK (Linear Algebra PACKage) and GSL (GNU Scientific Library) to perform some of its numerical work and pseudorandom number generation. These libraries are freely available for most systems. One peculiarity is that I use a FORTRAN77 version of LAPACK and therefore you need a FORTRAN77 compiler as well as a C++ compiler. When using shared libraries I use ATLAS (Automatically Tuned Linear Algebra Software) to provide BLAS functionality.
I have successfully built JCDIS on a test system with a minimal Debian GNU/Linux installation (stable Woody distribution) with:
1a. The following packages installed:
atlas2-base atlas2-base-dev atlas2-headers lapack libgsl0 libgsl0-dev
1b. OR the following packages installed:
blas blas-dev lapack libgsl0 libgsl0-dev
2. Packages associated with the C and C++ and fortran tasks as defined by Debian's tasksel. Any sane GNU/Linux or UNIX-like system (with the exception of MacOSX) should have equivalent packages installed by default. Just in case you need to know, the packages are:
autoconf autoconf2.13 automake autoproject autotools-dev binutils bison c2man cflow cpp cpp-2.95 cutils cvs cxref file flex ftnchek fweb g++ g++-2.95 g77 g77-2.95 gcc gcc-2.95 gdb gettext gettext-el glibc-doc iconx indent libc6-dev libfreetype6 libstdc++2.10-dev libtool liwc ltrace m4 make manpages-dev nowebm patch perl perl-modules slatec stl-manual strace xfree86-common xlibs
With some versions of the linker (GNU binutils 2.14.90.0.7) it is necessary to include a -z muldefs flag. Earlier versions (GNU binutils 2.12.90.0.1) do not understand this flag.
eigensystem.c++ really just provides a wrapper function that calls BLAS and LAPACK routines. If you really cannot get these libraries for your system, then you could probably use the eigen.c source in Yang's PAML package and rewrite the wrapper.
You may be able to speed up execution if your kernel and libraries are optimised for your system.