Какую версию использует система, если существует несколько версий библиотеки

Какую версию использует система, если существует несколько версий библиотеки

Допустим, у нас уже установлена ​​библиотека freetype в /usr/lib64/libfreetype.so версии 1.4, и есть другая версия этой библиотеки, которую мы скомпилировали и установили в /usr/local/lib/libfreetype.so. Как система сборки (make) узнает, какую версию использовать, когда мы собираем программное обеспечение, требующее freetype?

решение1

Краткая версия: это зависит от обстоятельств.

  • ОС: может существовать специфичный для ОС LD_LIBRARY_PATHфайл конфигурации среды ( ) или команда (например, ldconfig(8)), которая регистрирует пути, используемые для поиска библиотек.
  • система сборки: может бытьпеременные средытакие как LDFLAGSили флаги командной строки или настройки файла конфигурации; muttимеет --with-curses=[dir]для случая, когда система (или пользователь) имеет ncurses в пользовательском пути. Они зависят от системы сборки (или даже тогда от разновидности make) и могут потребоваться вручную прописать в файлы autoconf или cmake.
  • Конфигурация после сборки: такие инструменты, как patchelf(если доступны), позволяют выбирать различные библиотеки или изменять путь поиска.

решение2

libxxx.soобычно представляет собой символическую ссылку на файл общей библиотеки, в имени которого указана версия.

Если вы ссылаетесь с помощью , то используется -lxxxэтот файл.libxxx.so

Если вы хотите создать ссылку на другую версию, вам необходимо указать полный путь к библиотеке.

Связанный контент