Shared objects are libraries that once loaded into memory allow code space to be shared by all invocations of any application that uses this library. They are not linked into the application, only loaded into memory on invocation. This can save a lot of memory.
Shared objects live in the same places as the typical archive libraries.
They are suffixed with a .so, and often also a version number, for example libc-2.0.7.so, and libc.so.5.4.38.
Version numbers are usually stamped within an application, as calling the wrong shared object can result in unpredictable and fatal behaviour. The command for displaying the required shared objects for an executable binary is ldd binary_file.
Sometimes a binary is unable to locate a shared object and will refuse to start. The default search path needs overriding for that binary. The typical solution is to create a shell front end and set the environment variable LD_RUN_PATH or LD_LIBRARY_PATH. This is set up in the same way as the PATH variable.
For further information on what environment variable to use, check out the man page for ld (the linker/loader).