diff --git a/Makefile.am b/Makefile.am
index 3955445144d89f5d56eaed9c3e9c149dead5f27d..d8580b7b363dbdb125d8d6bdfcbfe9e12ca4e089 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -73,7 +73,7 @@ include disabled.mk
 # explicitly depend on the generators and .excluded and .shared metafiles
 # depend on the .dlopen file IFF it exists
 shim/lib%.so.c: generate-stublib.sh print-libstubs capsule-shim.h shim/lib%.so.c.*
-	$(GENSTUB)$(top_srcdir)/$< $$(basename $@ .c) $@.excluded $@.shared $@
+	$(GENSTUB)$(top_srcdir)/$< $$(basename $@ .c) $@.excluded $@.shared $@ 	"$(lib$(*)_la_LDFLAGS)";
 
 debug:
 	@echo srcs : $(shim_srcs)
diff --git a/generate-stublib.sh b/generate-stublib.sh
index 5d542138cb07dc11cc7db0cab6cf0ece77944170..d0467fbe533ab3c405ab77436b7921c0cc5429e7 100755
--- a/generate-stublib.sh
+++ b/generate-stublib.sh
@@ -20,6 +20,18 @@
 set -u
 set -e
 
+major_version=0;
+
+parse_ldflags ()
+{
+    while [ $# -ge 2 ] && [ "$1" != -version-number ]; do shift; done;
+
+    if [ $# -ge 2 ] && [ "$1" = -version-number ] && [ -n "$2" ];
+    then
+        major_version=${2%%:*};
+    fi
+}
+
 declare -A NODE;
 top=$(dirname $0);
 top=${top:-.};
@@ -28,9 +40,16 @@ proxied_dso=$1;    shift;
 proxy_excluded=$1; shift;
 proxy_extra=$1;    shift;
 proxy_src=$1;      shift;
+ldflags=$1;        shift;
+
+parse_ldflags $ldflags;
+
+proxied_dso=${proxied_dso%.so*}.so.${major_version};
+
 symbol_file=${proxy_src%.c}.symbols;
 map_file=${proxy_src%.c}.map;
 dlopen_file=${proxy_src}.dlopen;
+
 echo -n > $symbol_file;
 echo -n > $map_file;