--- /dev/null
+default: all
+
+CFLAGS=-fPIC
+
+clean:
+ rm -rf *.o *.so* without-version/ with-version/ app
+
+without-version:
+ mkdir -p without-version
+
+without-version/vscript: without-version
+ echo "{ global: *; };" > without-version/vscript
+
+without-version/lib.so.0: lib.o without-version/vscript
+ gcc -shared -o without-version/lib.so.0 -Wl,-soname=lib.so.0 -Wl,--version-script=without-version/vscript lib.o
+
+with-version:
+ mkdir -p with-version
+
+with-version/vscript: with-version
+ echo "LIB_0 { global: *; };" > with-version/vscript
+
+with-version/lib.so.0: lib.o with-version/vscript
+ gcc -shared -o with-version/lib.so.0 -Wl,-soname=lib.so.0 -Wl,--version-script=with-version/vscript lib.o
+
+app: app.o without-version/lib.so.0 with-version/lib.so.0
+ gcc -o app app.o without-version/lib.so.0
+
+show: clean app
+ readelf -a without-version/lib.so.0 |grep lib_function
+ LD_LIBRARY_PATH=without-version/ ldd ./app
+ LD_LIBRARY_PATH=without-version/ ./app
+ readelf -a with-version/lib.so.0 |grep lib_function
+ LD_LIBRARY_PATH=with-version/ ldd ./app
+ LD_LIBRARY_PATH=with-version/ ./app
+
+all: show