Лучший способ справиться с этим - использовать libtool, который выполняет управление версиями для вас.
По сути, информация о версии не (или в первую очередь не знаю из моей головы) закодирована в самой библиотеке, а точнее в его имени файла.Номера версий обычно указываются в трехточечном формате, причем основной номер увеличивается для каждого разрыва в нисходящей совместимости с ABI, средний - для разрыва в восходящей совместимости с ABI, а второстепенный - для исправлений, которые не меняли ABI.
Как отмечено в qdot, символические ссылки в каталоге lib предоставляют необходимые версии.Существует символическая ссылка без номера версии (libfoo.so) для установленных в настоящее время заголовков разработки, символическая ссылка с основным номером для каждой установленной основной версии (libfoo.so.1) и реальный файл с полным номером версии.Обычно программы связаны с использованием libfoo.so.1 во время выполнения, так что несколько основных версий могут сосуществовать.