--- a/src/cppinterface/Makefile
+++ b/src/cppinterface/Makefile
@@ -30,7 +30,7 @@
 ifeq ($(CXXENABLE),1)
 
 USER_HDRS = sion_cxx_base.hpp sion_cxx_serial.hpp sion_cxx_common.hpp sion_cxx_mpi.hpp sion_cxx_ompi.hpp  sion_cxx_omp.hpp 
-USER_LIBS = lib$(SION_LIBNAME_CXX_SER).a lib$(SION_LIBNAME_CXX_MPI).a
+USER_LIBS = lib$(SION_LIBNAME_CXX_SER).so lib$(SION_LIBNAME_CXX_MPI).so
 else
 USER_HDRS = 
 USER_LIBS = 
@@ -57,13 +57,15 @@
 
 all: $(USER_LIBS)
 
+../lib/lib$(SION_LIBNAME_SER).so :
+	make -C ../lib lib$(SION_LIBNAME_SER).so
 
-lib$(SION_LIBNAME_CXX_SER).a : $(SION_OBJS_SER)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_SER)
+lib$(SION_LIBNAME_CXX_SER).so : $(SION_OBJS_SER) ../lib/lib$(SION_LIBNAME_SER).so
+	$(CXX) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_CXX_SER).so -shared -o $@ $(SION_OBJS_SER) -L../lib -l$(SION_LIBNAME_SER)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_CXX_MPI).a : $(SION_OBJS_MPI)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_MPI)
+lib$(SION_LIBNAME_CXX_MPI).so : $(SION_OBJS_MPI)
+	$(MPICXX) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_CXX_MPI).so -shared -o $@ $(SION_OBJS_MPI)
 	@echo "*** $@ built"
 
 sion_cxx_base.o :
@@ -118,7 +120,7 @@
 	done
 
 clean:
-	rm -f *.o lib*.a
+	rm -f *.o lib*.so
 
 #------------------------------------------------------------------------------
 # Dependencies
--- a/src/fortraninterface/Makefile
+++ b/src/fortraninterface/Makefile
@@ -39,7 +39,7 @@
 
 USER_HDRS = sion_f77.H sion_f77.h 
 USER_MODS = sion_f90.mod
-USER_LIBS = lib$(SION_LIBNAME_F77_SER).a lib$(SION_LIBNAME_F77_MPI).a lib$(SION_LIBNAME_F90_SER).a lib$(SION_LIBNAME_F90_MPI).a
+USER_LIBS = lib$(SION_LIBNAME_F77_SER).so lib$(SION_LIBNAME_F77_MPI).so lib$(SION_LIBNAME_F90_SER).so lib$(SION_LIBNAME_F90_MPI).so
 else
 USER_HDRS = 
 USER_MODS =
@@ -56,39 +56,47 @@
   SION_OBJS_F77_SER += sion_f77_omp.o sion_fortran_omp.o
   SION_OBJS_F90_SER += sion_f90_omp.o sion_fortran_omp.o
   USER_MODS += sion_f90_omp.mod
+  F77_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) -L../lib -l$(SION_LIBNAME_GEN)
+  F90_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP) -L../lib -l$(SION_LIBNAME_GEN)
 endif
 
 ifeq ($(MPIENABLE),1)
   SION_OBJS_F77_MPI += sion_f77_mpi.o sion_fortran_mpi.o sion_fortran_writeread_mpi_f77.o
   SION_OBJS_F90_MPI += sion_f90_mpi.o sion_fortran_mpi.o sion_fortran_writeread_mpi_f90.o
   USER_MODS += sion_f90_mpi.mod
+  F77_MPI_LIBS = -L../parlib -l$(SION_LIBNAME_MPI)
+  F90_MPI_LIBS = -L../parlib -l$(SION_LIBNAME_MPI)
 endif
 
 ifeq ($(HYBENABLE),1)
   SION_OBJS_F77_MPI += sion_f77_ompi.o sion_fortran_ompi.o
   SION_OBJS_F90_MPI += sion_f90_ompi.o sion_fortran_ompi.o
   USER_MODS += sion_f90_ompi.mod
+  F77_MPI_LIBS = $(HYBFLAG) -L../parlib -l$(SION_LIBNAME_OMPI)
+  F90_MPI_LIBS = $(HYBFLAG) -L../parlib -l$(SION_LIBNAME_OMPI)
 endif   
 
 SION_DEPEND_OBJS=sion_fortran.o sion_fortran_omp.o sion_fortran_mpi.o sion_fortran_ompi.o sion_fortran_writeread_f77.o sion_fortran_writeread_f90.o  sion_fortran_writeread_mpi_f77.o sion_fortran_writeread_mpi_f90.o 
 
 all: $(USER_LIBS) $(USER_MODS)
 
+../lib/lib$(SION_LIBNAME_SER).so :
+	make -C ../lib lib$(SION_LIBNAME_SER).so
 
-lib$(SION_LIBNAME_F77_SER).a : $(SION_OBJS_F77_SER)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F77_SER)
+lib$(SION_LIBNAME_F77_SER).so : $(SION_OBJS_F77_SER) ../lib/lib$(SION_LIBNAME_SER).so
+	$(F77) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F77_SER).so -shared -o $@ $(SION_OBJS_F77_SER) $(F77_SER_LIBS)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_F77_MPI).a : $(SION_OBJS_F77_MPI)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F77_MPI)
+lib$(SION_LIBNAME_F77_MPI).so : $(SION_OBJS_F77_MPI)
+	$(MPIF77) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F77_MPI).so -shared -o $@ $(SION_OBJS_F77_MPI) $(F77_MPI_LIBS)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_F90_SER).a : $(SION_OBJS_F90_SER)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F90_SER)
+lib$(SION_LIBNAME_F90_SER).so : $(SION_OBJS_F90_SER) ../lib/lib$(SION_LIBNAME_SER).so
+	$(F90) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F90_SER).so -shared -o $@ $(SION_OBJS_F90_SER) $(F90_SER_LIBS)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_F90_MPI).a : $(SION_OBJS_F90_MPI)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_F90_MPI)
+lib$(SION_LIBNAME_F90_MPI).so : $(SION_OBJS_F90_MPI)
+	$(MPIF90) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_F90_MPI).so -shared -o $@ $(SION_OBJS_F90_MPI) $(F90_MPI_LIBS)
 	@echo "*** $@ built"
 
 # F77 interface
@@ -206,7 +214,7 @@
 	done
 
 clean:
-	rm -f *.o lib*.a *.mod
+	rm -f *.o lib*.so *.mod
 
 #------------------------------------------------------------------------------
 # Dependencies
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -66,26 +66,31 @@
 SION_CXX_HDR = sion_cxx.h
 endif
 
-USER_HDRS = sion.h sion_common.h sion_serial.h sion_const.h sion_datatypes.h sion_platform.h sion_debug.h $(SION_CXX_HDR)
-USER_LIBS = lib$(SION_LIBNAME_SER).a lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a 
+ifneq ($(PTHREADSUPPORT),"no")
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_PTHREADS)
+else
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_NONE)
+endif
 
+USER_HDRS = sion.h sion_common.h sion_serial.h sion_const.h sion_datatypes.h sion_platform.h sion_debug.h $(SION_CXX_HDR)
+USER_LIBS = lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so
 
-all: lib$(SION_LIBNAME_COM).a lib$(SION_LIBNAME_SER).a  lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a lib$(SION_LIBNAME_COM_LOCK_NONE).a 
+all: lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_SER).so lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so lib$(SION_LIBNAME_COM_LOCK_NONE).so
 
-lib$(SION_LIBNAME_COM).a : $(SION_COMMON_OBJS)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_COMMON_OBJS)
+lib$(SION_LIBNAME_COM).so : $(SION_COMMON_OBJS) lib$(LOCKLIB).so
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_COM).so -shared -o $@ $(SION_COMMON_OBJS) $(SIONFWD_LIBS) -L. -l$(LOCKLIB)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_COM_LOCK_PTHREADS).a : $(SION_COMMON_LOCK_PTHREADS_OBJS)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_COMMON_LOCK_PTHREADS_OBJS)
+lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so : $(SION_COMMON_LOCK_PTHREADS_OBJS)
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_COM_LOCK_PTHREADS).so -shared -o $@ $(SION_COMMON_LOCK_PTHREADS_OBJS)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_COM_LOCK_NONE).a : $(SION_COMMON_LOCK_NONE_OBJS)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_COMMON_LOCK_NONE_OBJS)
+lib$(SION_LIBNAME_COM_LOCK_NONE).so : $(SION_COMMON_LOCK_NONE_OBJS)
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_COM_LOCK_NONE).so -shared -o $@ $(SION_COMMON_LOCK_NONE_OBJS)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_SER).a : $(SION_SER_OBJS)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_SER_OBJS)
+lib$(SION_LIBNAME_SER).so : $(SION_SER_OBJS) lib$(SION_LIBNAME_COM).so
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_SER).so -shared -o $@ $(SION_SER_OBJS) -L. -l$(SION_LIBNAME_COM)
 	@echo "*** $@ built"
 
 sion_lock_pthreads.o: sion_lock.c
@@ -178,7 +183,7 @@
 	done
 
 clean:
-	rm -f *.o lib*.a
+	rm -f *.o lib*.so
 
 #------------------------------------------------------------------------------
 # Dependencies
--- a/src/parlib/Makefile
+++ b/src/parlib/Makefile
@@ -29,7 +29,7 @@
 .SUFFIXES:  .cpp .c .f
 
 USER_HDRS = sion_datatypes_mpi.h sion_mpi.h sion_ompi.h sion_omp.h sion_generic.h 
-USER_LIBS = lib$(SION_LIBNAME_GEN).a
+USER_LIBS = lib$(SION_LIBNAME_GEN).so
 
 SION_OBJS_GEN = sion_generic.o \
 	sion_generic_internal.o \
@@ -46,7 +46,7 @@
 	          sion_omp_cb_gen.o \
 	          sion_omp_internal_gen.o 
   USER_HDRS += sion_omp.h 
-  USER_LIBS += lib$(SION_LIBNAME_OMP).a 
+  USER_LIBS += lib$(SION_LIBNAME_OMP).so
 endif
 
 ifeq ($(MPIENABLE),1)
@@ -58,7 +58,7 @@
 	          sion_mpi_util.o  \
 		  sion_mpi_file_check.o
   USER_HDRS += sion_datatypes_mpi.h sion_mpi.h 
-  USER_LIBS += lib$(SION_LIBNAME_MPI).a 
+  USER_LIBS += lib$(SION_LIBNAME_MPI).so
 endif
 ifeq ($(HYBENABLE),1)
   SION_OBJS_HYB = sion_ompi_gen.o \
@@ -67,16 +67,18 @@
 	          sion_ompi_util.o \
                   sion_ompi_internal_gen.o 
   USER_HDRS += sion_datatypes_mpi.h sion_ompi.h
-  USER_LIBS += lib$(SION_LIBNAME_OMPI).a 
+  USER_LIBS += lib$(SION_LIBNAME_OMPI).so
 endif   
 
 ifeq ($(HYBENABLE),1)
   LOCKCC    =$(HYBCC)
   LOCKCFLAGS=$(CHYBFLAGS)
+  LOCKLINK=$(HYBFLAG)
 else 
 ifeq ($(OMPENABLE),1)
   LOCKCC    =$(OMPCC)
   LOCKCFLAGS=$(COMPFLAGS)
+  LOCKLINK=$(OMPFLAG)
 else
   LOCKCC    =$(CC)
   LOCKCFLAGS=$(CFLAGS)
@@ -87,20 +89,23 @@
 
 all: $(USER_LIBS)
 
-lib$(SION_LIBNAME_GEN).a : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL)
+../lib/lib$(SION_LIBNAME_COM).so :
+	make -C ../lib lib$(SION_LIBNAME_COM).so
+
+lib$(SION_LIBNAME_GEN).so : $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_GEN).so -shared -o $@ $(SION_OBJS_GEN) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_OMP).a : $(SION_OBJS_OMP) $(SION_OBJS_INTERNAL)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_OMP) $(SION_OBJS_INTERNAL)
+lib$(SION_LIBNAME_OMP).so : $(SION_OBJS_OMP) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_GEN).so
+	$(CC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_OMP).so -shared -o $@ $(SION_OBJS_OMP) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM) -L. -l$(SION_LIBNAME_GEN) $(OMPFLAG)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_MPI).a : $(SION_OBJS_MPI) $(SION_OBJS_INTERNAL)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_MPI) $(SION_OBJS_INTERNAL)
+lib$(SION_LIBNAME_MPI).so : $(SION_OBJS_MPI) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_GEN).so
+	$(MPICC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_MPI).so -shared -o $@ $(SION_OBJS_MPI) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM) -L. -l$(SION_LIBNAME_GEN)
 	@echo "*** $@ built"
 
-lib$(SION_LIBNAME_OMPI).a : $(SION_OBJS_HYB) $(SION_OBJS_INTERNAL)
-	$(C_AR) $(AFLAG) -rcs $@ $(SION_OBJS_HYB) $(SION_OBJS_INTERNAL)
+lib$(SION_LIBNAME_OMPI).so : $(SION_OBJS_HYB) $(SION_OBJS_INTERNAL) ../lib/lib$(SION_LIBNAME_COM).so lib$(SION_LIBNAME_GEN).so
+	$(HYBCC) $(LDFLAGS) -Wl,-soname,lib$(SION_LIBNAME_OMPI).so -shared -o $@ $(SION_OBJS_HYB) $(SION_OBJS_INTERNAL) $(LOCKLINK) -L../lib -l$(SION_LIBNAME_COM) -L. -l$(SION_LIBNAME_GEN) $(HYBFLAG)
 	@echo "*** $@ built"
 
 sion_generic.o : sion_generic.c
@@ -224,7 +229,7 @@
 	done
 
 clean:
-	rm -f *.o lib*.a opari*
+	rm -f *.o lib*.so opari*
 
 #------------------------------------------------------------------------------
 # Dependencies
--- a/src/parutils/Makefile
+++ b/src/parutils/Makefile
@@ -30,12 +30,18 @@
 COMPFLAGS = $(OMPMFLAG) $(OMPFLAG)
 CHYBFLAGS = $(HYBMFLAG) $(HYBFLAG)
 
-CMPILDFLAGS = $(LDFLAGS) -L../parlib -l$(SION_LIBNAME_MPI) -L../lib -l$(SION_LIBNAME_GEN) -L../lib -l$(SION_LIBNAME_COM) -l$(SION_LIBNAME_COM_LOCK_PTHREADS) $(HINTSLIB) $(CACHELIB) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
+ifneq ($(PTHREADSUPPORT),"no")
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_PTHREADS)
+else
+LOCKLIB = $(SION_LIBNAME_COM_LOCK_NONE)
+endif
+
+CMPILDFLAGS = $(LDFLAGS) -L../lib -l$(LOCKLIB) -L../lib -l$(SION_LIBNAME_COM) -L../parlib -l$(SION_LIBNAME_GEN) -L../parlib -l$(SION_LIBNAME_MPI) $(HINTSLIB) $(CACHELIB) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
 
-COMPLDFLAGS = $(LDFLAGS) -L../parlib -l$(SION_LIBNAME_OMP)  -L../lib -l$(SION_LIBNAME_COM) -l$(SION_LIBNAME_COM_LOCK_PTHREADS) $(HINTSLIB) $(CACHELIB) $(OMPFLAG) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
-CHYBLDFLAGS = $(LDFLAGS) -L../parlib -l$(SION_LIBNAME_OMPI) -L../lib -l$(SION_LIBNAME_GEN) -L../lib -l$(SION_LIBNAME_COM) -l$(SION_LIBNAME_COM_LOCK_PTHREADS) $(HINTSLIB) $(CACHELIB) $(OMPFLAG) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
+COMPLDFLAGS = $(LDFLAGS) -L../lib -l$(LOCKLIB) -L../lib -l$(SION_LIBNAME_COM) -L../parlib -l$(SION_LIBNAME_OMP) $(HINTSLIB) $(CACHELIB) $(OMPFLAG) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
+CHYBLDFLAGS = $(LDFLAGS) -L../lib -l$(LOCKLIB) -L../lib -l$(SION_LIBNAME_COM) -L../parlib -l$(SION_LIBNAME_GEN) -L../parlib -l$(SION_LIBNAME_OMPI) $(HINTSLIB) $(CACHELIB) $(OMPFLAG) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
 
-FMPILDFLAGS = $(LDFLAGS) -L../parlib -l$(SION_LIBNAME_MPI) -L../lib -l$(SION_LIBNAME_GEN) -L../lib -l$(SION_LIBNAME_SER) -l$(SION_LIBNAME_COM) -l$(SION_LIBNAME_COM_LOCK_PTHREADS) $(HINTSLIB) $(CACHELIB) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
+FMPILDFLAGS = $(LDFLAGS) -L../lib -l$(LOCKLIB) -L../lib -l$(SION_LIBNAME_COM) -L../lib -l$(SION_LIBNAME_SER) -L../parlib -l$(SION_LIBNAME_GEN) -L../parlib -l$(SION_LIBNAME_MPI) $(HINTSLIB) $(CACHELIB) $(CUDA_LIBRARY_PATHS) $(CUDA_LIBRARIES) $(SIONFWD_LIBS) $(IMELIB_LIBPATH) $(IMELIB_LIB)
 FOMPLDFLAGS = $(COMPLDFLAGS)  $(OMPFLAG)
 FHYBLDFLAGS = $(COMPILDFLAGS) $(OMPFLAG)
 
@@ -55,6 +61,13 @@
 ifeq ($(FORTRANENABLE),1)
   ifeq ($(MPIENABLE),1)
     USER_UTILS += fpartest
+    F77_MPI_LIBS = -L../parlib -l$(SION_LIBNAME_MPI)
+  endif
+  ifeq ($(OMPENABLE),1)
+    F77_SER_LIBS = $(OMPFLAG) -L../parlib -l$(SION_LIBNAME_OMP)
+  endif
+  ifeq ($(HYBENABLE),1)
+    F77_MPI_LIBS = $(HYBFLAG) -L../parlib -l$(SION_LIBNAME_OMPI)
   endif
 endif
 
@@ -75,10 +88,10 @@
 
 all: $(USER_UTILS)
 
-partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).a  ../parlib/lib$(SION_LIBNAME_GEN).a  ../lib/lib$(SION_LIBNAME_SER).a 
+partest: $(PARTEST_OBJS) ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so
 	$(MPICC) -o $@ $(PARTEST_OBJS) -L../lib -l$(SION_LIBNAME_SER) $(CMPILDFLAGS) $(MPILIB)
 
-ompi_partest: $(PARTEST_OMPI_OBJS) ../parlib/lib$(SION_LIBNAME_OMPI).a ../parlib/lib$(SION_LIBNAME_OMP).a ../lib/lib$(SION_LIBNAME_SER).a 
+ompi_partest: $(PARTEST_OMPI_OBJS) ../parlib/lib$(SION_LIBNAME_OMPI).so ../parlib/lib$(SION_LIBNAME_OMP).so ../lib/lib$(SION_LIBNAME_SER).so
 	$(HYBCC) -o $@ $(PARTEST_OMPI_OBJS) $(CHYBLDFLAGS) -L../parlib -l$(SION_LIBNAME_OMP) -L../lib -l$(SION_LIBNAME_SER)  $(MPILIB)
 
 ompi_partest.o : ompi_partest.c
@@ -114,8 +127,8 @@
 fpartest.o : fpartest.F90
 	$(MPIF90) $(FFLAGS) -c fpartest.F90
 
-fpartest: fpartest.o  ../parlib/lib$(SION_LIBNAME_MPI).a  ../parlib/lib$(SION_LIBNAME_GEN).a ../lib/lib$(SION_LIBNAME_SER).a ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).a ../fortraninterface/lib$(SION_LIBNAME_F77_SER).a
-	$(MPIF90) -o $@ fpartest.o  -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB) 
+fpartest: fpartest.o ../parlib/lib$(SION_LIBNAME_MPI).so ../parlib/lib$(SION_LIBNAME_GEN).so ../lib/lib$(SION_LIBNAME_SER).so ../fortraninterface/lib$(SION_LIBNAME_F77_MPI).so ../fortraninterface/lib$(SION_LIBNAME_F77_SER).so
+	$(MPIF90) -o $@ fpartest.o -L../fortraninterface -l$(SION_LIBNAME_F77_MPI) -l$(SION_LIBNAME_F77_SER) $(FMPILDFLAGS) $(MPILIB) $(F77_MPI_LIBS) $(F77_SER_LIBS)
 
 
 install: all
@@ -161,7 +174,7 @@
 	@rm -f header.tmp
 
 clean:
-	rm -f *.o lib*.a $(USER_UTILS)
+	rm -f *.o lib*.so $(USER_UTILS)
 
 #------------------------------------------------------------------------------
 # Dependencies
--- a/src/utils/Makefile
+++ b/src/utils/Makefile
@@ -45,32 +45,32 @@
 siondump.o : siondump.c 
 	$(CC) $(CFLAGS) -c siondump.c
 
-siondefrag.o : siondefrag.c ../lib/lib$(SION_LIBNAME_SER).a 
+siondefrag.o : siondefrag.c ../lib/lib$(SION_LIBNAME_SER).so
 	$(CC) $(CFLAGS) -c siondefrag.c
 
-sionsplit.o : sionsplit.c ../lib/lib$(SION_LIBNAME_SER).a  
+sionsplit.o : sionsplit.c ../lib/lib$(SION_LIBNAME_SER).so
 	$(CC) $(CFLAGS) -c sionsplit.c
 
-sioncat.o : sioncat.c ../lib/lib$(SION_LIBNAME_SER).a  
+sioncat.o : sioncat.c ../lib/lib$(SION_LIBNAME_SER).so
 	$(CC) $(CFLAGS) -c sioncat.c
 
-sionversion.o : sionversion.c ../lib/lib$(SION_LIBNAME_SER).a  
+sionversion.o : sionversion.c ../lib/lib$(SION_LIBNAME_SER).so
 	$(CC) $(CFLAGS) -c sionversion.c
 
-siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).a  ../lib/lib$(SION_LIBNAME_COM).a  ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+siondump: siondump.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
 	$(CC)  -o $@ siondump.o $(LDFLAGS)
 	cp siondump $(TOPDIR)/..
 
-siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).a  ../lib/lib$(SION_LIBNAME_COM).a  ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+siondefrag: siondefrag.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
 	$(CC)  -o $@ siondefrag.o $(LDFLAGS)
 
-sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).a  ../lib/lib$(SION_LIBNAME_COM).a  ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sionsplit: sionsplit.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
 	$(CC)  -o $@ sionsplit.o $(LDFLAGS)
 
-sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).a  ../lib/lib$(SION_LIBNAME_COM).a  ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sioncat: sioncat.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
 	$(CC)  -o $@ sioncat.o $(LDFLAGS)
 
-sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).a  ../lib/lib$(SION_LIBNAME_COM).a  ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).a
+sionversion: sionversion.o ../lib/lib$(SION_LIBNAME_SER).so ../lib/lib$(SION_LIBNAME_COM).so ../lib/lib$(SION_LIBNAME_COM_LOCK_NONE).so
 	$(CC)  -o $@ sionversion.o $(LDFLAGS)
 
 
@@ -136,7 +136,7 @@
 	@rm -f header.tmp
 
 clean:
-	rm -f *.o lib*.a $(USER_UTILS)
+	rm -f *.o lib*.so $(USER_UTILS)
 
 #------------------------------------------------------------------------------
 # Dependencies
