Что может быть причиной?
Фактические предупреждающие сообщения, предоставляемые разработчиком проекта, более понятны, чем сообщения «проверки ...», которые являются стандартными сообщениями Autoconf, объясняющими, что он делает, а не целью его выполнения.
Смысл этих проверок заключается не в том, чтобы найти конкретные символы. Это всего лишь средство для проверки того, может ли компоновщик найти определенную библиотеку. Символ, который Autoconf пытается заставить компоновщик разрешить, выбирается разработчиком проекта, и он должен быть тем, который характерен для требуемой библиотеки.
То, что проверки не пройдены, означает, что рассматриваемые библиотеки не расположены компоновщиком, или что они не содержат указанные символы. Первое гораздо более распространено. Последний может возникнуть из-за простой ошибки или из-за того, что компоновщик выбрал неверную библиотеку или неверную версию. Также возможно, что найдена непригодная версия библиотеки (неправильная архитектура, недоступная, ...), что в некотором роде и то и другое.
Похоже, что разработчик проекта выбрал отправку дополнительных сообщений, когда эти проверки не пройдены, по-видимому, потому что все еще возможно создать программное обеспечение, но вы получите версию с ограниченными возможностями.
Значит ли это, что у меня неправильная версия библиотеки? Или, может быть, библиотека должна быть перекомпилирована с другой конфигурацией?
Как я уже описал, существует множество возможностей. Сценарий configure
запишет файл журнала в каталог сборки, который предоставляет более подробную информацию о том, что именно он пытался и как не удалось, с сообщениями об ошибках. Вам следует обратиться к этому журналу за подробностями.
Что мне делать, если я столкнулся с такой проблемой?
Начните с вызова и чтения справки по конфигурации:
./configure --help
Многое из этого является стандартным, но в нем могут быть описаны соответствующие опции, которые вы можете передать configure
для разрешения ситуации.
Вы также можете найти полезную информацию в проектной документации. Охват и качество варьируются в широких пределах, но обычно в документах сообщается, какая версия сторонних библиотек вам понадобится.
Для получения подробной информации о неудачных проверках вы также можете просмотреть журнал конфигурации.
Информация, которую вы собираете таким образом, должна определять, как вы поступите оттуда. Решением может быть установка дополнительных библиотек или передача соответствующего аргумента в configure
, но в некоторых случаях вам необходимо обновить и перестроить систему сборки проекта и, возможно, ее источник для обработки вашей среды.
Несколько советов для простых случаев:
- Сборка библиотеки - это не то же самое, что установка ее. Обычно компоновщик не находит удаленные библиотеки.
- В системах, которые делают различие, вам нужны пакеты разработки для рассматриваемых библиотек. Пакеты времени выполнения обычно не достаточны в таких системах.
- Убедитесь, что вы правильно выбрали библиотеку. Иногда я бился головой об стену, пытаясь понять, почему
configure
, похоже, не видит установленную библиотеку, и я обнаружил, что у меня была неправильная архитектура библиотеки (32-разрядная или 64-разрядная).
Некоторые пакеты неправильно устанавливают свои библиотеки вне стандартного пути поиска компоновщика. Клиентные клиенты таких пакетов часто предоставляют способ передать путь к configure
через аргументы командной строки, но если нет, вы можете использовать переменную окружения LDFLAGS
, , например,
LDFLAGS="-L/path/to/libfoo.d" ./configure