Переменная окружения PKG_CONFIG_PATH

Рассмотрите возможность настройки переменной среды PKG_CONFIG_PATH, если вы установили программное обеспечение с нестандартным префиксом. Что это значит?

73
задан 31 October 2012 в 23:00

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 использование значения эта команда:

echo $PKG_CONFIG_PATH

Установить PKG_CONFIG_PATH использование значения:

export PKG_CONFIG_PATH=/usr/lib/pkgconfig

или

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
70
ответ дан 31 October 2012 в 23:00

Первый ответ недостаточно технически ясен. На странице руководства (откройте терминал, введите 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.

0
ответ дан 31 October 2012 в 23:00

Я посмотрел man-страницу моей 64-битной системы и немного запутался. В одной строке сказано:

pkg-config извлекает информацию о пакетах из специальных файлов метаданных. Эти файлы названы в честь пакета с расширением .pc. По умолчанию pkg-config ищет в этих файлах префикс директории / lib / pkgconfig; он также будет смотреть в списке каталогов, разделенных двоеточиями (в Windows, разделенных точкой с запятой), указанных переменной среды PKG_CONFIG_PATH.

Я предполагал, что это всегда выглядит в каталогах lib / pkgconfig. Оказывается это сами каталоги. В моем случае я пытался скомпилировать учебник Hello World GTK. Я нахожу нужный файл, например

locate gtk | grep '\.pc'

Среди результатов:

/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc

Наконец был сделать экспорт.

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
0
ответ дан 31 October 2012 в 23:00

Я пытался установить последнюю версию 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.

Итак, я попытался:

$ pkg-config --cflags openssl
[ 1110] и я получил:

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.

0
ответ дан 31 October 2012 в 23:00

Мне кажется, что большинство ответов содержат слишком много информации, чем необходимо.

Программное обеспечение, которое устанавливается, может (и обычно делает) полагаться на некоторые библиотеки и / или заголовки, и Система использует 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:<your-directory>

Для получения дополнительной информации вы можете посмотреть здесь [ 115] и здесь

0
ответ дан 31 October 2012 в 23:00

Вы пытаетесь создать часть программного обеспечения, скажем, 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, но получить его правильно сложно и очень специфично для конкретной библиотеки.

0
ответ дан 31 October 2012 в 23:00

Чтобы узнать, где 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.

0
ответ дан 31 October 2012 в 23:00

Это означает, что вы пытаетесь создать что-то из исходного кода, и он не может найти все необходимые ему зависимости. Скрипт pkg-config, который он использует для поиска файлов разработки для этих библиотек, выводит это сообщение.

0
ответ дан 31 October 2012 в 23:00

Те, кто использует https://github.com/confluentinc/confluent-kafka-go

, следуют клон мерзавца librdkafka

  1. установки https://github.com/edenhill/librdkafka.git
  2. cd librdkafka
  3. ./configure - префикс/usr
  4. делает
  5. , sudo делают установку

Теперь, можно использовать, идут, установка / идет выполненная, идут, создают

0
ответ дан 17 October 2019 в 10:44

Другие вопросы по тегам:

Похожие вопросы: