общие библиотеки, создающие мягкую ссылку - PullRequest
1 голос
/ 08 апреля 2010

Redhat 5.5 gcc версия 4.1.2

У меня есть каталог call lib, и в этом каталоге у меня есть все общие библиотеки (около 30), которые мы получаем от наших клиентов при использовании их API. Мы связываемся с этим API.

структура каталогов:

/usr/CSAPI/lib

Однако наш клиент обновит свой API, чтобы мы получили новые библиотеки, обычно около 3 или 4.

Что я делал, так это когда получал новые библиотеки. Стоит удалить старый и поставить в другой каталог. И замените их новыми библиотеками в каталоге lib.

/usr/CSAPI/Old_libs

Новое и старое будут иметь одинаковые имена. т.е.

libcs.so  < old
libcs.so  < new

Есть ли лучший способ справиться с этим? Я думал о создании мягкой линии, но так как имена совпадают, я не уверен, что это сработает.

Большое спасибо,

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Обычно библиотеки имеют версии, а не просто "одно и то же имя".

В вашей папке /usr/lib будет файл для каждой версии:

/usr/lib/libFLAC.so.8.2.0
/usr/lib/libFLAC.so.8.2.1
/usr/lib/libFLAC.so.8.2.2

Затем вы ставите символическую ссылку на основные версии библиотеки на последнюю минорную версию:

/usr/lib/libFLAC.so.8 -> /usr/lib/libFLAC.so.8.2.2

Преимущество этого состоит в том, что изменения API добавят новые файлы и обновят символические ссылки, но если мне нужно указать конкретный номер версии API, файл все еще тут же.

Это не в камне, так что делайте все, что работает для вашего процесса выпуска:)

1 голос
/ 08 апреля 2010

Симлинки - очень хороший способ справиться с этим.Я бы сделал что-то немного по-другому.Я хотел бы создать структуру каталогов, например:

/usr/CSAPI/lib_v1
/usr/CSAPI/lib_v2

, и в каждом из них я бы поместил фактические файлы.Затем я бы создал отдельный каталог:

/usr/CSAPI/lib

, который содержит только символические ссылки на реальные файлы в lib_v1, lib_v2 и т. Д.текущая версия, но если вам нужно, вы можете использовать предыдущую версию, просто изменив свой LD_LIBRARY_PATH.

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