Переменная окружения PKG_CONFIG_PATH
Рассмотрите возможность настройки переменной среды PKG_CONFIG_PATH, если вы установили программное обеспечение с нестандартным префиксом. Что это значит?
9 ответов
PKG_CONFIG_PATH переменная среды, которая указывает дополнительные пути в который pkg-config будет искать его .pc файлы.
Эта переменная используется для увеличения пути поиска pkg-конфигурации по умолчанию. В типичной системе Unix это будет искать в каталогах /usr/lib/pkgconfig и /usr/share/pkgconfig . Это будет обычно покрывать установленные модули системы. Однако некоторые локальные модули могут быть установлены в другом префиксе такой как /usr/local . В этом случае необходимо предварительно ожидать путь поиска так, чтобы pkg-конфигурация могла определить местоположение .pc файлов.
pkg-config программа используется для получения информации об установленных библиотеках в системе. Основное использование pkg-config должен предоставить необходимую подробную информацию для компиляции и соединения программы к библиотеке. Эти метаданные хранятся в pkg-файлах-конфигурации. Эти файлы имеют суффикс .pc и находятся в определенных местоположениях, известных инструменту pkg-конфигурации.
Проверять PKG_CONFIG_PATH использование значения эта команда:
Установить PKG_CONFIG_PATH использование значения:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
Первый ответ недостаточно технически ясен. На странице руководства (откройте терминал, введите man pkg-config ):
pkg-config извлекает информацию о пакетах из специальных файлов метаданных. Эти файлы названы в честь пакета и имеют расширение .pc . В большинстве систем pkg-config ищет эти файлы в /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig и /usr/local/share/pkgconfig . Кроме того, он будет выглядеть в списке каталогов, разделенных двоеточиями (в Windows, разделенных точкой с запятой), указанных в переменной среды PKG_CONFIG_PATH .
Итак, программа pkg-config отсутствует в каталоге PKG_CONFIG_PATH ; однако, если вы устанавливаете библиотеку, чтобы информация, используемая в сценарии automake , была доступна, она должна находиться в каталоге, о котором знает pkg-config .
Я посмотрел man-страницу моей 64-битной системы и немного запутался. В одной строке сказано:
pkg-config извлекает информацию о пакетах из специальных файлов метаданных. Эти файлы названы в честь пакета с расширением .pc. По умолчанию pkg-config ищет в этих файлах префикс директории / lib / pkgconfig; он также будет смотреть в списке каталогов, разделенных двоеточиями (в Windows, разделенных точкой с запятой), указанных переменной среды PKG_CONFIG_PATH.
Я предполагал, что это всегда выглядит в каталогах lib / pkgconfig. Оказывается это сами каталоги. В моем случае я пытался скомпилировать учебник Hello World GTK. Я нахожу нужный файл, например
Среди результатов:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
Наконец был сделать экспорт.
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
Я пытался установить последнюю версию axel , и я запустил ./configure , и я получил это:
configure: error: Package requirements (openssl) were not met: No package 'openssl' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SSL_CFLAGS and SSL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
Package openssl was not found in the pkg-config search path. Perhaps you should add the directory containing `openssl.pc' to the PKG_CONFIG_PATH environment variable No package 'openssl' found
Как очевидно, я установил openssl ( sudo apt-get install openssl ) Но на приведенном выше выводе, как вы можете видеть, говорится: «Пакет« openssl не найден ». Итак, чтобы убедиться, что я сделал:
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
Оказывается, мне нужен какой-то другой пакет, так что немного погуглив, и я обнаружил, что мне нужно установить этот пакет:
sudo apt-get install libssl-dev
И все это не имело никакого отношения к изменению переменной env пути pkg-config.
Мне кажется, что большинство ответов содержат слишком много информации, чем необходимо.
Программное обеспечение, которое устанавливается, может (и обычно делает) полагаться на некоторые библиотеки и / или заголовки, и Система использует pkg-config для их поиска.
Сказал так, pkg-config ищет эти файлы в предопределенных (по умолчанию) системных каталогах. Эти папки являются «префиксом». Например. ожидается, что библиотека с префиксом /usr/local будет иметь заголовки в /usr/local/include , а сама библиотека будет в /usr/local/lib . pkg-config , однако, ищет библиотеки также в каталоге, указанном в переменной среды PKG_CONFIG_PATH .
Затем, если вы устанавливаете программное обеспечение вне списка папок по умолчанию, вам нужно было «настроить» список, а именно добавить свои каталоги в PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:
Для получения дополнительной информации вы можете посмотреть здесь [ 115] и здесь
Вы пытаетесь создать часть программного обеспечения, скажем, Widget. Виджет опирается на другую библиотеку, libcog ради аргумента. Процесс сборки виджета (возможно, скрипт configure) использует pkg-config, чтобы определить, как использовать libcog. pkg-config ничего не знает о libcog.
Если libcog не установлен, это ваша проблема. Есть большая вероятность, что стандартная установка libcog решит проблему. В зависимости от вашей системы вам может потребоваться установить дополнительную версию пакета для разработчиков; он часто имеет «-devel» или «-dev» в конце, поэтому если вы устанавливаете «libcog», вам также может понадобиться установить «libcog-devel».
Если libcog установлен, он, вероятно, установлен не так, как его может найти pkg-config. Вероятно, где-то в вашей системе есть файл libcog.pc. Ради аргумента, это в /opt/cog/lib/pkgconfig/libcog.pc. В этом случае вы можете сообщить об этом pkg-config, установив PKG_CONFIG_PATH в каталог, содержащий libcog.pc. Таким образом, в оболочке Bourne или аналогичной, что-то вроде
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
Как только это будет сделано, мы надеемся, что повторный запуск команды, которая не удалась, сработает.
Если установлен libcog, включая библиотеки и заголовочные файлы, и у вас нет файла libcog.pc, дела идут плохо. Предположительно стандартная установка libcog включает в себя информацию, иначе Widget не будет полагаться на нее. Я бы сначала расследовал переустановку libcog. Можно вручную создать файл libcog.pc, но получить его правильно сложно и очень специфично для конкретной библиотеки.
Чтобы узнать, где pkg-config (версия 0.24 или более поздняя) ищет установленные библиотеки по умолчанию, используйте следующую команду:
pkg-config --variable pc_path pkg-config
Чтобы изменить этот путь, установите переменную среды PKG_CONFIG_PATH . Man-файл сообщает PKG_CONFIG_PATH :
Разделенный двоеточиями (в Windows, разделенный точкой с запятой) список каталогов для поиска файлов .pc. Каталог по умолчанию всегда будет искать после поиска пути; по умолчанию это libdir / pkgconfig: datadir / pkgconfig, где libdir — это libdir, где pkg-config и datadir — это каталог данных, где был установлен pkg-config.
Это означает, что вы пытаетесь создать что-то из исходного кода, и он не может найти все необходимые ему зависимости. Скрипт pkg-config , который он использует для поиска файлов разработки для этих библиотек, выводит это сообщение.
, следуют клон мерзавца librdkafka
- установки https://github.com/edenhill/librdkafka.git
- cd librdkafka
- ./configure — префикс/usr
- делает
- , sudo делают установку
Теперь, можно использовать, идут, установка / идет выполненная, идут, создают
Другие вопросы по тегам:
Похожие вопросы:
- Когда я открываю терминал перед любыми командами, я вижу “PKG_CONFIG: команда, не найденная” — 8 January 2017 21:08
- Ошибка при запуске ./configure в источнике Ubiquity — 21 January 2011 00:12
- Почему & ldquo; pkg-config & rdquo; печатать только пробел с помощью & ldquo; — cflags & rdquo; вариант? — 22 July 2012 14:27
- Проблема с получением флагов libconfig — 31 July 2017 13:34
- CMAKE НЕ Мог найти PkgConfig (отсутствующий: PKG_CONFIG_EXECUTABLE) — 8 November 2019 14:42
- Зависимости vtg-plugin не выполнялись — 18 June 2011 17:48
- смелый плагин бесконечности — 28 December 2013 21:30