Index: meson/part/exports/copy-export.sh
===================================================================
--- meson/part/exports/copy-export.sh	(revision 715ae00b7fdb98a015c6e9c3303c9bea5d8c293d)
+++ meson/part/exports/copy-export.sh	(revision 00eeffa5aa242b2af8d46a65e8f13cff1d01eb89)
@@ -47,6 +47,10 @@
         sharedlib)
             filename="$(basename "$2")"
+            major_versioned_name="$3"
+            # strip the last `.123` part
+            unversioned_name="$(echo "$major_versioned_name" | rev | cut -d. -f2- | rev)"
             cp -L "$2" "${target_dir}/lib/$filename"
-            ln -s "$filename" "${target_dir}/lib/$3"
+            ln -s "$filename" "${target_dir}/lib/$major_versioned_name"
+            ln -s "$filename" "${target_dir}/lib/$unversioned_name"
             ;;
         include)
Index: uspace/lib/meson.build
===================================================================
--- uspace/lib/meson.build	(revision 715ae00b7fdb98a015c6e9c3303c9bea5d8c293d)
+++ uspace/lib/meson.build	(revision 00eeffa5aa242b2af8d46a65e8f13cff1d01eb89)
@@ -166,5 +166,5 @@
 
 	# Shared object version of the library.
-	version = '0'
+	version = '0.0'
 
 	# Sources of unit tests.
@@ -243,6 +243,5 @@
 	if src.length() > 0
 		if not always_static
-			_libname_unversioned = 'lib' + l + '.so'
-			_libname = _libname_unversioned + '.' + version
+			_libname = 'lib' + l + '.so.' + version.split('.')[0]
 
 			_shared_lib = shared_library(l, src,
@@ -289,5 +288,5 @@
 				dependencies: _shared_deps,
 			)
-			exported_devel_files += ['sharedlib', _shared_lib, _libname_unversioned]
+			exported_devel_files += [ 'sharedlib', _shared_lib, _libname ]
 		endif
 
