Разница между .so.0 и .so.0.0.0 файлами - PullRequest
6 голосов
/ 05 января 2010

Я использую реализацию источника рыночных данных, содержащую файлы .so.0. Однако это «мягкие ссылки» на актуальные файлы .so.0.0.0. Почему это сделано?

Когда я пытаюсь скопировать эти ссылки .so.0, происходит копирование точной копии файла .so.0.0.0, но с префиксом .so.0.

Добавлен комментарий:

поэтому у меня есть файл libfoo.so, и он доступен через java через jni. Этот файл libfoo.so на самом деле является мягкой ссылкой, которая указывает на libfoo.so.0.0.0. Что произойдет, если у меня нет libfoo.so. Как java / или любой другой скомпилированный код, выяснить, что libfoo.so.0.0.0, если общий объект использовать?

Ответы [ 2 ]

8 голосов
/ 05 января 2010

Файлы .0 и .0.0.0 существуют, так что может происходить управление версиями:

  • foo.0 представляет версию библиотеки .0. Все .0 версии библиотеки будут использовать один и тот же интерфейс, но могут быть разные реализации. (Надеюсь, более поздние реализации будут иметь меньше ошибок, чем более ранние.)

  • foo.0.0.0 представляет собой конкретную реализацию версии .0.

Теперь бесполезно иметь софт-ссылку. Но вот что может произойти:

Программист foo находит ошибку в своей библиотеке. Он выпускает foo.0.0.1. И foo.0 теперь ссылается на foo.0.0.1. Затем происходят две вещи:

  • Все файлы, которые ссылаются на foo.0, автоматически обновятся до foo.0.0.1.
  • Все файлы, которые ссылаются на foo.0.0.0, будут продолжать использовать старый foo.0.0.0
8 голосов
/ 05 января 2010

Это так, чтобы программы могли связываться с любой версией libfoo, имеющей такой же интерфейс (я хочу последние обновления для libfoo), или связываться с определенной версией (я хочу стабильность и только ту версию, с которой я тестировал).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...