I assume you have installed CPSeis before in Centos 5/6 or some other
enterprise linux, and know how to setup .bashrc, cps_config.dat and so on.
You need the "everything" ISO (burnt to dual-layer DVD).
I presume Scientific Linux will work as well, but Springdale and
Oracle linux have smaller ISOs, and I don't know what they left out.
Install Centos 7 with 'development and creative workstation' option.
Further select these extras:
Additional development
Compatibility libraries
Development tools
Legacy X window system compatibility
After installation, you also need:
yum install libstdc++.i686
yum install libstdc++-static
yum install xterm
yum install xorg-x11-fonts-ISO8859-1*
Install Sun/Oracle JDK version 6u45
Install Intel compiler version 13 or later.
Get the latest revision of CPSEIS from sourceforge.
Build FFTW
For MPICH2, edit build_mpich2.sh
change "-fno-second-underscore" to "-assume no2underscores" in FFLAGS
add a line "CXX=icps"
Locate the directory containing "libsvml.a" in your Intel compiler installation.
Then in your cpseis directory, create a symbolic link named "intel_x86_64"
to that directory.
Edit makefile.spws
Replace libguide and libguide_stats with libiomp5 (this changed in Intel
compiler version 12).
Change INCDIRS to remove "X11R6" between usr and include (these paths do
occasionally change between linux versions).
Rename the file hh7.f to hh7.foff otherwise va will not build. There are
multiple definition of symbols from both headgeth.o and hh7.o (from the
Fortran 77 files in utlib directory). This is a weird problem that I did
not encounter before. Anyway renaming hh7.f made it go away.
For platform makefile in wrappers/etc, can copy makefile.x86_64_intel91_mpich2
For platform makefile in spws_home/making, FOR_LIBS and INCDIRS have to be
customised for each major version of linux. So it should look like this:
#<CPS_v1 type="SCRIPT" pretag="#"/>
##-------------------------- x86_64_intel13_mpich2 -------------------------------##
# -------------------------------for RHEL 7 and Intel 13
# using g++ instead of icpc, otherwise program cfg does not work
permitted_architectures = x86_64
permitted_hosts = unrestricted
FC = mpif90 -c -g
FC_LINK = mpif90 -g
CC = mpicc -c -g -Wall -fPIC -mcmodel=medium \
-DLINUX -DLINUXI -D_REENTRANT -D_FILE_OFFSET_BITS=64 \
-DIA64 -D_64LINUXI91
CC_LINK = mpicc
CXX = g++ -c -g -Wall -fPIC -mcmodel=medium \
-DLINUX -DLINUXI -D_FILE_OFFSET_BITS=64 \
-DIA64 -D_64LINUXI91
CXX_LINK = mpif90 -g -cxxlib -nofor_main -i-static
CXX_DEPEND = icpc -MM -DLINUX -DLINUXI -D_FILE_OFFSET_BITS=64
AR_LINK = ar -ursv
SO_LINK = mpicc -shared -g
MODEXT = .mod
MODFLAG = -I
FOR_LIBS = /lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.a -liomp5
GUI_LIBS = -L/usr/lib64 -lXm -lXmu -lXp -lXext -lXt -lSM -lICE -lX11
MATH_LIBS = -lm -lpthread -lc
JAVA_LIBS = -L$(JAVA_HOME)/jre/lib/amd64 -L$(JAVA_HOME)/jre/lib/amd64/server \
-ljava -ljvm -lverify
INCDIRS += $(JAVA_HOME)/include $(JAVA_HOME)/include/linux
INCDIRS += /usr/include
INCDIRS += /usr/include/X11
INCDIRS += /usr/include/Xm
INCDIRS += /usr/include/X11/Xmu
INCDIRS += /usr/include/X11/extensions
INCDIRS += /usr/include/X11/SM
INCDIRS += /usr/include/X11/ICE
INCDIRS += /usr/include/X11/Xaw