--- a/Makefile
+++ b/Makefile
@@ -86,6 +86,7 @@
   SHARED_OBJ_NAME_EXT:=.so
   SHARED:=-shared
 endif
+SONAME_VERSION:=.0
 
 # compiled executables
 GTMAIN_SRC:=src/gt.c src/gtr.c src/gtt.c src/interactive.c
@@ -238,7 +239,7 @@
 
 # add necessary shared lib dependencies then not building them ourselves
 ifeq ($(useshared),yes)
-  DEPLIBS:=-lbz2 -lz -lexpat -llua5.1-lpeg -llua5.1 -llua5.1-md5 \
+  DEPLIBS:=-lm -lbz2 -lz -lexpat -llua5.1-lpeg -llua5.1 -llua5.1-md5 \
            -llua5.1-filesystem -llua5.1-des56 -lbam
 else
   DEPLIBS:=
@@ -517,7 +518,7 @@
 
 ifdef DESTDIR
   prefix:=$(DESTDIR)$(prefix)
-endif
+ endif
 
 # allow to set patch program
 patch ?= patch
@@ -595,8 +596,9 @@
                                           $(ADDITIONAL_ZLIBS)
 	@echo "[link $(@F)]"
 	@test -d $(@D) || mkdir -p $(@D)
-	@$(CC) $(EXP_LDFLAGS) $(GT_LDFLAGS) $(ADDITIONAL_SO_DEPS) $(SHARED) $(LIBGENOMETOOLS_OBJ) \
-	-o $@ $(GTSHAREDLIB_LIBDEP)
+	@$(CC) $(EXP_LDFLAGS) $(GT_LDFLAGS) $(ADDITIONAL_SO_DEPS) $(SHARED) \
+	-Wl,-soname,$(notdir $@)$(SONAME_VERSION) $(LIBGENOMETOOLS_OBJ) \
+	-o $@$(SONAME_VERSION) $(GTSHAREDLIB_LIBDEP)
 
 lib/libtecla.a: $(LIBTECLA_OBJ)
 	@echo "[link $(@F)]"
@@ -934,7 +936,8 @@
 ifdef RANLIB
 	$(RANLIB) $(prefix)/lib/libgenometools.a
 endif
-	cp lib/libgenometools$(SHARED_OBJ_NAME_EXT) $(prefix)/lib
+	cp lib/libgenometools$(SHARED_OBJ_NAME_EXT)$(SONAME_VERSION) $(prefix)/lib
+	ln -fs $(prefix)/lib/$(SHARED_OBJ_NAME_EXT)$(SONAME_VERSION) $(prefix)/lib/$(SHARED_OBJ_NAME_EXT)
 	@echo '[build config script $(@F)]'
 	sed -e 's!@CC@!$(CC)!' -e 's!@CFLAGS@!$(EXP_CFLAGS)!' \
 	  -e 's!@CPPFLAGS@!$(subst ",\\",-I"$(prefix)/include" $(EXP_CPPFLAGS))!' \
