Я считаю, ldconfig
- это стандартный инструмент, который делает это.
Я помню, что где-то он мог генерировать символические ссылки на основе внутренней информации о версии, но сейчас не может найти источник.
РЕДАКТИРОВАТЬ Да, если вы запустите
ldconfig -v
Вы увидите, что он генерирует все ссылки на основе внутренних компонентов библиотеки.
ldconfig /path/to/dir
Будет создавать ссылки только для файлов в этом каталоге
Примечание, однако, я играл с ним, и похоже, что он не всегда создает .so $, просто .so. {Major}
Я не уверен, как работают его внутренние компоненты, но я знаю:
lib # rm libmagic.so
lib # rm libmagic.so.1
lib # ldconfig
lib # file libmagic.so.1
libmagic.so.1: symbolic link to `libmagic.so.1.0.0'
lib # file libmagic.so
libmagic.so: cannot open `libmagic.so' (No such file or directory)
Так, что определяет, как это работает, для меня загадка
Редактировать При дальнейшем исключении файлы .la не влияют на поведение.
Поле имени «SO» указывает, как будет вызываться символическая ссылка.
И будет только один.
0x000000000000000e (SONAME) Имя библиотеки библиотеки: [libmagix.so]
Это после взлома кода и замены ".1" пробелами.
ldconfig сгенерировал "libmagic.so" (да, включая пробелы)