Note: A new major or minor version of a library can be installed, even while running programs are making use of an existing version.
Example - upgrading a shared library with a new minor version (1.0.2):
# gcc -fPIC -g -c -Wall mod1.c mod2.c mod3.c
# gcc -shared -Wl,-soname,libdemo.so.1 -o libdemo.so.1.0.2 \
mod1.o mod2.o mod3.o
# mv libdemo.so.1.0.2 /usr/lib
# ldconfig -v | grep libdemo
libdemo.so.1 -> libdemo.so.1.0.2 (changed)
Assuming the linker name was already correctly set up, we do not need to modify it.
Then upgrading to a new major version (2.0.1):
# gcc -fPIC -g -c -Wall mod1.c mod2.c mod3.c
# gcc -shared -Wl,-soname,libdemo.so.2 -o libdemo.so.2.0.1 \
mod1.o mod2.o mod3.o
# mv libdemo.so.2.0.1 /usr/lib
# ldconfig -v | grep libdemo
libdemo.so.1 -> libdemo.so.1.0.2
libdemo.so.2 -> libdemo.so.2.0.1 (changed)
# cd /usr/lib
# ln -sf libdemo.so.2 libdemo.so
ldconfig automatically creates a soname
symbolic link, but we must manually update the
linker name symbolic link.
(C) 2006, Michael Kerrisk