--- a/Makefile.in
+++ b/Makefile.in
@@ -41,7 +41,7 @@ LIBRARY	= lib$(MODULE).a
 
 # thread version of the library
 LIB_TH	= lib$(MODULE)th.a
-LIB_TH_SL = lib$(MODULE)th.@shlibext@
+LIB_TH_SL = lib$(MODULE)th.@shlibext@.5.5.2
 @TH_ON@BUILD_ALL_1 = threads
 @TH_ON@INSTALL_LIB_1 = installth
 @SL_ON@BUILD_THREADS_1 = $(LIB_TH_SL)
@@ -50,8 +50,8 @@ LIB_TH_SL = lib$(MODULE)th.@shlibext@
 @TH_ON@@SL_ON@INSTALL_LIB_2 = installthsl
 
 # C++ version of the library
-LIB_CXX	= lib$(MODULE)xx.a
-LIB_CXX_SL = lib$(MODULE)xx.@shlibext@
+LIB_CXX	= lib$(MODULE)cxx.a
+LIB_CXX_SL = lib$(MODULE)cxx.@shlibext@.5.5.2
 @CXX_ON@BUILD_ALL_3 = $(LIB_CXX)
 @CXX_ON@INSTALL_LIB_3 = installcxx
 @SL_ON@BUILD_CXX_3 = $(LIB_CXX_SL)
@@ -61,7 +61,7 @@ LIB_CXX_SL = lib$(MODULE)xx.@shlibext@
 
 # threads + C++
 LIB_TH_CXX = lib$(MODULE)thcxx.a
-LIB_TH_CXX_SL = lib$(MODULE)thcxx.@shlibext@
+LIB_TH_CXX_SL = lib$(MODULE)thcxx.@shlibext@.5.5.2
 @TH_ON@@CXX_ON@BUILD_ALL_5 = $(LIB_TH_CXX)
 @TH_ON@@CXX_ON@INSTALL_LIB_5 = installthcxx
 @TH_ON@BUILD_CXX_5 = $(LIB_TH_CXX)
@@ -76,7 +76,7 @@ LIB_TH_CXX_SL = lib$(MODULE)thcxx.@shlib
 @CXX_ON@@SL_ON@INSTALL_THREADS_6 = installthcxxsl
 
 # shared versions of the libraries
-LIB_SL = lib$(MODULE).@shlibext@
+LIB_SL = lib$(MODULE).@shlibext@.5.5.2
 @SL_ON@BUILD_ALL_7 = $(LIB_SL)
 @SL_ON@INSTALL_LIB_7 = installsl
 @SL_ON@BUILD_TH_CXX_7 = $(LIB_TH_CXX_SL)
@@ -145,9 +145,13 @@ SHELL = /bin/sh
 
 HFLS = dmalloc.h
 OBJS = arg_check.o compat.o dmalloc_rand.o dmalloc_tab.o env.o heap.o
+OBJS_SL = arg_check_sl.o compat_sl.o dmalloc_rand_sl.o dmalloc_tab_sl.o env_sl.o heap_sl.o
 NORMAL_OBJS = chunk.o error.o malloc.o
+NORMAL_OBJS_SL = chunk_sl.o error_sl.o malloc_sl.o
 THREAD_OBJS = chunk_th.o error_th.o malloc_th.o
+THREAD_OBJS_SL = chunk_th_sl.o error_th_sl.o malloc_th_sl.o
 CXX_OBJS = dmallocc.o
+CXX_OBJS_SL = dmallocc_sl.o
 
 CFLAGS = $(CCFLAGS)
 TEST = $(MODULE)_t
@@ -160,9 +164,9 @@ all : $(BUILD_ALL)
 
 clean :
 	rm -f $(A_OUT) core *.o *.t
-	rm -f $(LIBRARY) $(LIB_TH) $(LIB_CXX) $(LIB_TH_CXX) $(TEST) $(TEST_FC)
-	rm -f $(LIB_TH_SL) $(LIB_CXX_SL) $(LIB_TH_CXX_SL) $(LIB_SL)
+	rm -f $(TEST) $(TEST_FC)
 	rm -f $(UTIL) dmalloc.h
+	rm -f lib$(MODULE)*.*
 
 realclean : clean
 
@@ -181,43 +185,43 @@ installincs : $(HFLS)
 	$(INSTALL_DATA) $(HFLS) $(includedir)
 
 installthsl : $(LIB_TH_SL)
-	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIB_TH_SL) $(libdir)
+	$(srcdir)/mkinstalldirs $(shlibdir)
+	$(INSTALL) $(LIB_TH_SL) $(shlibdir)
 
 installth : $(INSTALL_THREADS)
 	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIB_TH) $(libdir)
+	$(INSTALL) $(LIB_TH) $(libdir)
 @CXX_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
 @SL_OFF@	@echo "Enter 'make installthsl' to install the threaded shared-library"
 
 installthcxxsl : $(LIB_TH_CXX_SL)
 	$(srcdir)/mkinstalldirs $(shlibdir)
-	$(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(shlibdir)
+	$(INSTALL) $(LIB_TH_CXX_SL) $(shlibdir)
 
 installthcxx : $(INSTALL_TH_CXX)
 	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIB_TH_CXX) $(libdir)
+	$(INSTALL) $(LIB_TH_CXX) $(libdir)
 @SL_OFF@	@echo "Enter 'make installthcxxsl' to install the threaded C++ shared-library"
 
 installcxxsl : $(LIB_CXX_SL)
-	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIB_CXX_SL) $(libdir)
+	$(srcdir)/mkinstalldirs $(shlibdir)
+	$(INSTALL) $(LIB_CXX_SL) $(shlibdir)
 
 installcxx : $(INSTALL_CXX)
 	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIB_CXX) $(libdir)
+	$(INSTALL) $(LIB_CXX) $(libdir)
 @TH_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
 @SL_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"
 
 installsl : $(LIB_SL)
 	$(srcdir)/mkinstalldirs $(shlibdir)
-	$(INSTALL_PROGRAM) $(LIB_SL) $(shlibdir)
+	$(INSTALL) $(LIB_SL) $(shlibdir)
 @CXX_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"
 @TH_OFF@	@echo "Enter 'make installthsl' to install thread shared-library"
 
 installlib : $(INSTALL_LIB)
 	$(srcdir)/mkinstalldirs $(libdir)
-	$(INSTALL_PROGRAM) $(LIBRARY) $(libdir)
+	$(INSTALL) $(LIBRARY) $(libdir)
 	@RANLIB@ $(libdir)/$(LIBRARY)
 @SL_OFF@	@echo "Enter 'make installsl' to install $(LIB_SL) in $(shlibdir)"
 @CXX_OFF@	@echo "Enter 'make installcxx' to install the C++ library"
@@ -255,10 +259,8 @@ shlib : $(BUILD_SL)
 # NOTE: you may have to edit the configure.ac script to get this to
 # work on your operating system.  Please send feedback to the author
 # via: http://256.com/gray/email.html
-$(LIB_SL) : $(LIBRARY)
-	rm -f $@ $@.t
-	@shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS)
-	mv $@.t $@
+$(LIB_SL) : $(OBJS_SL) $(NORMAL_OBJS_SL)
+	$(CC) -shared -Wl,-soname,libdmalloc.so.5 -o $@ $(OBJS_SL) $(NORMAL_OBJS_SL)
 
 $(LIBRARY) : $(OBJS) $(NORMAL_OBJS)
 	ar cr $@ $?
@@ -268,32 +270,26 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS)
 	ar cr $@ $?
 	@RANLIB@ $@
 
-$(LIB_TH_SL) : $(LIB_TH)
-	rm -f $@ $@.t
-	@shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS)
-	mv $@.t $@
+$(LIB_TH_SL) : $(OBJS_SL) $(THREAD_OBJS_SL)
+	$(CC) -shared -Wl,-soname,libdmallocth.so.5 -o $@ $(OBJS_SL) $(THREAD_OBJS_SL)
 
 $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
 	ar cr $@ $?
 	@RANLIB@ $@
 
-$(LIB_CXX_SL) : $(LIB_CXX)
-	rm -f $@ $@.t
-	@shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
-	mv $@.t $@
+$(LIB_CXX_SL) : $(OBJS_SL) $(NORMAL_OBJS_SL) $(CXX_OBJS_SL)
+	$(CC) -shared -Wl,-soname,libdmalloccxx.so.5 -o $@ $(OBJS_SL) $(NORMAL_OBJS_SL) $(CXX_OBJS_SL)
 
 $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
 	ar cr $@ $?
 	@RANLIB@ $@
 
-$(LIB_TH_CXX_SL) : $(LIB_TH_CXX)
-	rm -f $@ $@.t
-	@shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
-	mv $@.t $@
+$(LIB_TH_CXX_SL) : $(OBJS_SL) $(THREAD_OBJS_SL) $(CXX_OBJS_SL)
+	$(CC) -shared -Wl,-soname,libdmallocthcxx.so.5 -o $@ $(OBJS_SL) $(THREAD_OBJS_SL) $(CXX_OBJS_SL)
 
-threadssl : $(LIB_TH_SL)
+threadssl : $(LIB_TH_SL)$(ver)
 
-threadscxxsl : $(LIB_TH_CXX_SL)
+threadscxxsl : $(LIB_TH_CXX_SL)$(ver)
 
 threadscxx : $(BUILD_TH_CXX)
 @SL_OFF@	@echo "Enter 'make threadscxxsl' to build the threaded C++ shared-library"
@@ -302,7 +298,7 @@ threads : $(BUILD_THREADS)
 @CXX_OFF@	@echo "Enter 'make threadscxx' to build the threaded C++ library"
 @SL_OFF@	@echo "Enter 'make threadssl' to build the threaded shared library"
 
-cxxsl :  $(LIB_CXX_SL)
+cxxsl :  $(LIB_CXX_SL)$(ver)
 
 cxx : $(BUILD_CXX)
 @SL_OFF@	@echo "Enter 'make cxxsl' to build the cxx shared library"
@@ -371,6 +367,11 @@ dmallocc.o : $(srcdir)/dmallocc.cc
 	$(CXX) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \
 		-o ./$@
 
+dmallocc_sl.o : $(srcdir)/dmallocc.cc
+	rm -f $@
+	$(CXX) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \
+		-o ./$@
+
 #
 # auto configure settings - uncomment if you are doing configure
 # development on the library
@@ -395,38 +396,109 @@ dmallocc.o : $(srcdir)/dmallocc.cc
 
 arg_check.o: arg_check.c conf.h settings.h dmalloc.h chunk.h debug_tok.h \
   dmalloc_loc.h error.h arg_check.h
+arg_check_sl.o: arg_check.c conf.h settings.h dmalloc.h chunk.h debug_tok.h \
+  dmalloc_loc.h error.h arg_check.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 chunk.o: chunk.c conf.h settings.h dmalloc.h chunk.h chunk_loc.h \
   dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h error.h \
   error_val.h heap.h
+chunk_sl.o: chunk.c conf.h settings.h dmalloc.h chunk.h chunk_loc.h \
+  dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h error.h \
+  error_val.h heap.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
+compat_sl.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \
   debug_tok.h dmalloc_loc.h env.h error_val.h version.h
+dmalloc_sl.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \
+  debug_tok.h dmalloc_loc.h env.h error_val.h version.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \
   dmalloc_argv_loc.h compat.h
+dmalloc_argv_sl.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \
+  dmalloc_argv_loc.h compat.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \
   dmalloc_rand.h debug_tok.h dmalloc_loc.h error_val.h
+dmalloc_fc_t_sl.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \
+  dmalloc_rand.h debug_tok.h dmalloc_loc.h error_val.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc_rand.o: dmalloc_rand.c dmalloc_rand.h
+dmalloc_rand_sl.o: dmalloc_rand.c dmalloc_rand.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc_t.o: dmalloc_t.c conf.h settings.h compat.h dmalloc.h \
   dmalloc_argv.h dmalloc_rand.h arg_check.h debug_tok.h dmalloc_loc.h \
   error_val.h heap.h
+dmalloc_t_sl.o: dmalloc_t.c conf.h settings.h compat.h dmalloc.h \
+  dmalloc_argv.h dmalloc_rand.h arg_check.h debug_tok.h dmalloc_loc.h \
+  error_val.h heap.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 dmalloc_tab.o: dmalloc_tab.c conf.h settings.h chunk.h compat.h dmalloc.h \
   dmalloc_loc.h error.h error_val.h dmalloc_tab.h dmalloc_tab_loc.h
+dmalloc_tab_sl.o: dmalloc_tab.c conf.h settings.h chunk.h compat.h dmalloc.h \
+  dmalloc_loc.h error.h error_val.h dmalloc_tab.h dmalloc_tab_loc.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 env.o: env.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h \
   debug_tok.h env.h error.h
+env_sl.o: env.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h \
+  debug_tok.h env.h error.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 error.o: error.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
   dmalloc_loc.h env.h error.h error_val.h version.h
+error_sl.o: error.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
+  dmalloc_loc.h env.h error.h error_val.h version.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 heap.o: heap.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
   dmalloc_loc.h error.h error_val.h heap.h
+heap_sl.o: heap.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
+  dmalloc_loc.h error.h error_val.h heap.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 malloc.o: malloc.c conf.h settings.h dmalloc.h chunk.h compat.h \
   debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
   malloc_funcs.h return.h
+malloc_sl.o: malloc.c conf.h settings.h dmalloc.h chunk.h compat.h \
+  debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
+  malloc_funcs.h return.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 protect.o: protect.c conf.h settings.h dmalloc.h dmalloc_loc.h error.h \
   heap.h protect.h
+protect_sl.o: protect.c conf.h settings.h dmalloc.h dmalloc_loc.h error.h \
+  heap.h protect.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 chunk_th.o: chunk.c conf.h settings.h dmalloc.h chunk.h chunk_loc.h \
   dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h error.h \
   error_val.h heap.h
+chunk_th_sl.o: chunk.c conf.h settings.h dmalloc.h chunk.h chunk_loc.h \
+  dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h error.h \
+  error_val.h heap.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 error_th.o: error.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
   dmalloc_loc.h env.h error.h error_val.h version.h
+error_th_sl.o: error.c conf.h settings.h dmalloc.h chunk.h compat.h debug_tok.h \
+  dmalloc_loc.h env.h error.h error_val.h version.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@
 malloc_th.o: malloc.c conf.h settings.h dmalloc.h chunk.h compat.h \
   debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
   malloc_funcs.h return.h
+malloc_th_sl.o: malloc.c conf.h settings.h dmalloc.h chunk.h compat.h \
+  debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
+  malloc_funcs.h return.h
+	rm -f $@
+	$(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@