--- library/Makefile
+++ library/Makefile
@@ -31,8 +31,6 @@
 endif
 endif
 
-SOEXT=so.9
-
 DLEXT=so
 # OSX shared library extension:
 # DLEXT=dylib
@@ -42,6 +40,13 @@
 DLEXT=dll
 endif
 
+VERSION=0.0.0
+VERSION_MAJOR=$(word 1,$(subst ., ,$(VERSION)))
+VERSION_MINOR=$(word 2,$(subst ., ,$(VERSION)))
+LIB_SO=libpolarssl.$(DLEXT)
+LIB_SO_VERSION=$(LIB_SO).$(VERSION)
+LIB_SO_SONAME=$(LIB_SO).$(VERSION_MAJOR).$(VERSION_MINOR)
+
 OBJS=	aes.o		aesni.o		arc4.o			\
 		asn1parse.o								\
 		asn1write.o base64.o	bignum.o		\
@@ -81,7 +86,7 @@
 
 static: libpolarssl.a
 
-shared: libpolarssl.$(DLEXT)
+shared: $(LIB_SO_VERSION)
 
 libpolarssl.a: $(OBJS)
 	echo "  AR    $@"
@@ -89,13 +94,11 @@
 	echo "  RL    $@"
 	$(AR) -s $@
 
-libpolarssl.$(SOEXT): $(OBJS)
+$(LIB_SO_VERSION): $(OBJS)
 	echo "  LD    $@"
-	$(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS)
-
-libpolarssl.so: libpolarssl.$(SOEXT)
-	echo "  LN    $@ -> libpolarssl.$(SOEXT)"
-	ln -sf libpolarssl.$(SOEXT) $@
+	$(CC) -shared -Wl,-soname,$(LIB_SO_SONAME) $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS) \
+	&& ln -fs $@ $(LIB_SO_SONAME) \
+	&& ln -fs $(LIB_SO_SONAME) $(LIB_SO)
 
 libpolarssl.dylib: $(OBJS)
 	echo "  LD    $@"
