Версия библиотеки, версия API и soname: как их нужно назвать?

Я думаю, что можно получить то, от чего Вы хотите перекрестными ссылками вывод lshw -c disk и эта команда, udevadm info -q all -n <device>.

Например,

Мой /dev/sda устройство показывает следующий вывод для lshw:

$ sudo lshw -c disk
  *-disk                  
       description: ATA Disk
       product: ST9500420AS
       vendor: Seagate
       physical id: 0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda
       version: 0003
       serial: 5XA1A2CZ
       size: 465GiB (500GB)
       capabilities: partitioned partitioned:dos
       configuration: ansiversion=5 signature=ebc57757

Если я опрашиваю то же использование устройства devadm Я могу узнать, каково это DEVPATH :

$ sudo udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda

Эта строка имеет всю информацию, которую Вы ищете относительно этого устройства. Адрес PCI, "0000:00:1f.2", наряду с адресом SCSI, "0:0:0:0". Адрес SCSI является данными в 6-м положении при разбивании этих данных на наклонные черты вправо (" / ").

5
28.10.2015, 03:18
2 ответа

Обычно вы создаете файл libfoo.so.0.4.2 и symlink libfoo.so.0 -> libfoo.so.0.4.2

.
0
27.01.2020, 20:40

Если версия api - 0.4 , и она несовместима с другими версиями 0. * , тогда вам следует установить soname равным libfoo.so.0.4 . На самом деле soname может быть любой строкой, это нужно только для того, чтобы найти подходящую разделяемую библиотеку в вашей системе при загрузке исполняемого файла.

Многие пакеты (или дистрибутивы) используют схему именования, отличную от вашей. Например, версия libfoo 0.4.2 с api 0.4 станет libfoo.so.4.2 с soname libfoo.4 .

И при внесении существенных изменений в интерфейс, требующих не просто перекомпиляции и незначительных исправлений здесь и там, но и перезаписи большого количества кода в коде с использованием библиотеки - увеличьте «основную» основную версию путем переименования библиотеки. Затем libfoo.4.2 превращается в libfoo-1.so.0.1 при изменении версии с 0.4.2 на 1.0.1 .

Такая схема упрощает установку нескольких версий вашей библиотеки, если какое-то старое программное обеспечение еще не было переписано на совершенно новый api.

4
27.01.2020, 20:40

Теги

Похожие вопросы