Как приложения разрешаются для разных версий разделяемых библиотек во время выполнения?

Я новичок в том, как общие библиотеки работают в Linux. Я пытаюсь понять, как приложения разрешают разные версии одной и той же разделяемой библиотеки во время выполнения в Linux.

Насколько я понимаю, общая библиотека имеет три «имени», например,

  1. libmy.so .1.2 (настоящее имя, т.е. фактический файл obj)
  2. libmy.so.1 (SONAME, который встроен в фактический файл obj)
  3. libmy.so (имя компоновщика, предоставленное компоновщику во время компоновки и встроены в исполняемый файл)

Когда вы устанавливаете библиотеку через LDCONFIG, она создает следующие символические ссылки

  • (2) => (1)
  • (3) => libmy.so.2.0. В соответствии с рекомендациями SONAME будет libmy.so.2.0

    Во время связывания приложения какое имя компоновщика я бы указал с флагом «-l». Следуя рекомендациям, которые я прочитал ( http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.htm l), разве это не должно быть libmy.so, и если Итак, как будут различаться обе версии файла obj?

36
задан nisah 1 October 2010 в 13:55
поделиться