I recently read a lot about shared libraries on Linux, and here is what I learnt:
soname
including its major version number. Something like: libfoo.so.1
libfoo.so.1.0
/usr/local/lib
, if ldconfig
is run, it will read the soname
and create a symlink named libfoo.so.1
pointing to libfoo.so.1.0
.libfoo.so
pointing to libfoo.so.1.0
. This is usually done by the development package (when the library is packaged).Is this correct ?
Shared libraries are the most common way to manage dependencies on Linux systems. These shared resources are loaded into memory before the application starts, and when several processes require the same library, it will be loaded only once on the system. This feature saves on memory usage by the application.
Shared Libraries are the libraries that can be linked to any program at run-time. They provide a means to use code that can be loaded anywhere in the memory. Once loaded, the shared library code can be used by any number of programs.
The -shared or -dynamiclib option is required to create a shared library. The name of the source file is octagon.
Suggested reading:
Ulrich Drepper's How to write shared libraries: http://www.akkadia.org/drepper/dsohowto.pdf
Ulrich Drepper's Good Practices in library design, implementation, and maintenance: http://www.akkadia.org/drepper/goodpractice.pdf
dsohowto is much more detailed. goodpractice is a quick read.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With