--- library/Makefile
+++ library/Makefile
@@ -31,9 +31,17 @@
 endif
 endif
 
-SOEXT_TLS=so.10
-SOEXT_X509=so.0
-SOEXT_CRYPTO=so.2
+VERSION=0.0.0
+VERSION_MAJOR=$(word 1,$(subst ., ,$(VERSION)))
+VERSION_MINOR=$(word 2,$(subst ., ,$(VERSION)))
+
+define MAJOR_MINOR_ONLY
+$(patsubst %.$(VERSION),%.$(VERSION_MAJOR).$(VERSION_MINOR),$(strip $(1)))
+endef
+
+SOEXT_TLS=so.$(VERSION)
+SOEXT_X509=so.$(VERSION)
+SOEXT_CRYPTO=so.$(VERSION)
 
 # Set DLEXT=dylib to compile as a shared library for Mac OS X
 DLEXT ?= so
@@ -100,9 +108,11 @@
 
 libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so
 	echo "  LD    $@"
-	$(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS)
+	$(CC) -shared -Wl,-soname,$(call MAJOR_MINOR_ONLY,$@) -L. -lmbedcrypto -lmbedx509 $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_TLS)
 
 libmbedtls.so: libmbedtls.$(SOEXT_TLS)
+	echo "  LN    $(call MAJOR_MINOR_ONLY,$<) -> $<"
+	ln -sf $< $(call MAJOR_MINOR_ONLY,$<)
 	echo "  LN    $@ -> $<"
 	ln -sf $< $@
 
@@ -123,9 +133,11 @@
 
 libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so
 	echo "  LD    $@"
-	$(CC) -shared -Wl,-soname,$@ -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509)
+	$(CC) -shared -Wl,-soname,$(call MAJOR_MINOR_ONLY,$@) -L. -lmbedcrypto $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_X509)
 
 libmbedx509.so: libmbedx509.$(SOEXT_X509)
+	echo "  LN    $(call MAJOR_MINOR_ONLY,$<) -> $<"
+	ln -sf $< $(call MAJOR_MINOR_ONLY,$<)
 	echo "  LN    $@ -> $<"
 	ln -sf $< $@
 
@@ -146,9 +158,11 @@
 
 libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO)
 	echo "  LD    $@"
-	$(CC) -shared -Wl,-soname,$@ $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO)
+	$(CC) -shared -Wl,-soname,$(call MAJOR_MINOR_ONLY,$@) $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ $(OBJS_CRYPTO)
 
 libmbedcrypto.so: libmbedcrypto.$(SOEXT_CRYPTO)
+	echo "  LN    $(call MAJOR_MINOR_ONLY,$<) -> $<"
+	ln -sf $< $(call MAJOR_MINOR_ONLY,$<)
 	echo "  LN    $@ -> $<"
 	ln -sf $< $@
 
