Как вы должны знать, какие имена библиотек

70
7

При использовании такого инструмента, как pkg-config (см. Здесь), как следует знать, что должно быть именем библиотеки? Это не всегда интуитивно. DLIB, например, не работает для

    pkg-config --cflags dlib pkg-config --cflags libdlib pkg-config --cflags dlib-19.9

Обычно я должен выдать команду, например, sudo ldconfig -p | grep dlib sudo ldconfig -p | grep dlib, но все, что делает, это возврат libdlib.so, который также не работает.

Как эксперты решают эту проблему. Они просто знают все имена библиотек?

спросил(а) 2018-02-13T00:59:00+03:00 2 года, 7 месяцев назад
1
Решение
58

Это имя пакета, которое вы используете в качестве основного параметра для pkg-config, а затем применяете --cflags или --libs и т.д., Просто обращается к параметрам, указанным и оцениваемым из соответствующего конфигурационного файла пакета ([some_package_name].pc, aka файл метаданных pkg-config), который был найден в путях поиска pkg-config.

И да, нет правила, как имя пакета относится к имени библиотеки. Обычно это либо имя библиотеки без префикса lib-, либо просто имя всей библиотеки. Я нашел следующее в руководстве pkg-config:

Общий выбор - совместить имя библиотеки с именем.pc. Например, пакет, устанавливающий libfoo.so, будет иметь соответствующий файл libfoo.pc, содержащий метаданные pkg-config. Этот выбор не нужен; файл.pc должен быть просто уникальным идентификатором для вашей библиотеки. Следуя приведенному выше примеру, foo.pc или foolib.pc, вероятно, будут работать так же хорошо.

Однако вы можете перечислить все доступные в пути поиска pkg-config и узнать правильные имена перед их использованием в Makefile:

$ pkg-config --list-all | grep dlib

ответил(а) 2018-02-13T15:35:00+03:00 2 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема