Переменная окружения PKG_CONFIG_PATH
Рассмотрите возможность настройки переменной среды PKG_CONFIG_PATH, если вы установили программное обеспечение с нестандартным префиксом. Что это значит ?
PKG_CONFIG_PATH переменная окружения, которая указывает дополнительные пути, по которым pkg-config будут выполняться поиск файлов .pc
Эта переменная используется для дополнения пути поиска по умолчанию в pkg-config. В типичной системе Unix, он будет искать в каталогах /usr/lib/pkgconfig и /usr/share/pkgconfig . Это обычно покрывает установленные модули системы. Однако некоторые локальные модули могут быть установлены с другим префиксом, например /usr/local . В этом случае необходимо предварительно указать путь поиска, чтобы pkg-config могла найти файлы .pc.
pkg-config Программа используется для получения информации об установленных библиотек в системе. Основное назначение pkg-config — предоставить необходимую информацию для компиляции и связывания программы с библиотекой. Эти метаданные хранятся в файлах pkg-config. Эти файлы имеют суффикс .pc и находятся в определенных местах, известных инструменту pkg-config.
Чтобы проверить PKG_CONFIG_PATH значение, используйте эту команду:
Для установки PKG_CONFIG_PATH значения используйте:
Первый ответ не является технически достаточно явным. На странице руководства (откройте терминал, введите 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 .
Чтобы узнать, где pkg-config (версия 0.24 или новее) ищет установленные библиотеки по умолчанию, используйте следующую команду:
Чтобы изменить этот путь, установите PKG_CONFIG_PATH переменную среды. Man-файл гласит PKG_CONFIG_PATH :
Разделенный двоеточиями (в Windows, разделенный точкой с запятой) список каталогов для поиска файлов .pc. Каталог по умолчанию всегда будет искать после поиска пути; по умолчанию это libdir / pkgconfig: datadir / pkgconfig, где libdir — это libdir, где pkg-config и datadir — это каталог данных, где был установлен pkg-config.
Вы пытаетесь создать часть программного обеспечения, скажем, 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. Так что в оболочке Борна или аналогичной, что-то вроде
Как только это будет сделано, мы надеемся, что повторный запуск команды, которая не удалась, сработает.
PKG_CONFIG_PATH переменная среды
Рассмотрим настройку переменной среды PKG_CONFIG_PATH, если вы установленное программное обеспечение в нестандартном префиксе. Что это значит?
8 ответов
PKG_CONFIG_PATH — это переменная среды, которая указывает дополнительные пути, в которых pkg-config будет искать свои .pc-файлы.
Эта переменная используется для увеличения пути поиска pkg-config по умолчанию. В типичной системе Unix он будет искать в каталогах /usr/lib/pkgconfig и /usr/share/pkgconfig . Обычно это распространяется на модули, установленные системой. Однако некоторые локальные модули могут быть установлены в другом префиксе, таком как /usr/local . В этом случае необходимо добавить путь поиска, чтобы pkg-config мог найти файлы .pc.
Программа pkg-config используется для извлечения информации об установленных библиотеки в системе. Основное использование pkg-config — предоставить необходимые данные для компиляции и привязки программы к библиотеке. Эти метаданные хранятся в файлах pkg-config. Эти файлы имеют суффикс .pc и находятся в определенных местах, известных инструменту pkg-config.
Чтобы проверить значение PKG_CONFIG_PATH , используйте эту команду:
Чтобы установить значение PKG_CONFIG_PATH , используйте:
Первый ответ недостаточно технически достаточно ясен. На странице man (откройте терминал, введите man pkg-config ):
pkg-config извлекает информацию о пакетах из специальных файлов метаданных. Эти файлы названы в честь пакета и имеют расширение .pc . В большинстве случаев системы, pkg-config выглядит в /usr/lib/pkgconfig , —- +: = 5 = + —-, /usr/share/pkgconfig и /usr/local/lib/pkgconfig для этих файлов. Это дополнительно просмотрят разделенные двоеточиями (в Windows, разделенные точкой с запятой) список каталогов, указанный переменной окружения /usr/local/share/pkgconfig .
Таким образом, программа PKG_CONFIG_PATH не находится в pkg-config ; однако, если вы устанавливаете библиотеку, чтобы доступная информация использовалась в сценарии PKG_CONFIG_PATH , она должна быть в каталоге —- +: = 12 =: + —-.
Чтобы узнать, где pkg-config (версия 0.24 или новее) ищет установленные библиотеки по умолчанию, используйте следующую команду:
Чтобы изменить этот путь, установите переменную среды PKG_CONFIG_PATH . Состояние файла man PKG_CONFIG_PATH :
Разделенный двоеточием (в Windows, разделенный точкой с запятой) список каталоги для поиска .pc-файлов. Каталог по умолчанию всегда будет искать после поиска пути; по умолчанию используется libdir /pkgconfig: datadir /pkgconfig где libdir — это libdir, где pkg-config и datadir — это datadir, где установлен pkg-config.
Вы пытаетесь создать часть программного обеспечения, допустим, 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 или подобном, что-то вроде
Как только это будет сделано, повторное выполнение неудавшейся команды, надеюсь, будет работать.
Если libcog установлен, включая библиотеки и файлы заголовков, и у вас нет файла libcog.pc, все идет плохо. Предположительно, стандартная установка libcog включает в себя информацию, иначе Виджет не будет полагаться на нее. Сначала я исследовал переустановку libcog. Можно создать файл libcog.pc вручную, но получение его права затруднено и очень специфично для данной библиотеки.
Я посмотрел man-страницу на своей 64-битной системе и немного запутался. Он сказал в одной строке:
pkg-config извлекает информацию о пакетах из специальных файлы метаданных. Эти файлы названы в честь пакета, с расширение .pc. По умолчанию pkg-config выглядит в директории tory prefix /lib /pkgconfig для этих файлов; он также будет смотреть в разделенный двоеточием (в Windows, разделенный точкой с запятой) список каталогов, указанных в параметре PKG_CONFIG_PATH. состояние.
Я предположил, что он также выглядит в каталогах lib /pkgconfig. Оказывается, сами каталоги. В моем случае я пытался скомпилировать приветственный учебник gtk world gtk. Я найду файл, который я хочу, например.
Наконец, нужно было выполнить экспорт.
Мне кажется, что в большинстве ответов есть слишком много информации, чем нужно.
Программное обеспечение, которое устанавливается, может (и обычно) полагаться на некоторые библиотеки и /или заголовки, а система использует pkg-config для их поиска.
Сказано так, pkg-config ищет эти файлы в предопределенных (по умолчанию) системных каталогах. Эти папки являются «префиксными». Например. ожидается, что в библиотеке с префиксом /usr/local есть заголовки в /usr/local/include , а сама библиотека будет в /usr/local/lib . pkg-config , однако ищет библиотеки также в каталоге, указанном в переменной окружения PKG_CONFIG_PATH .
Затем, если вы устанавливаете программное обеспечение за пределами списка папок по умолчанию, вам нужно «настроить» список, а именно добавить свои каталоги в PKG_CONFIG_PATH
Для получения дополнительной информации вы можете посмотреть здесь и здесь
Это означает, что вы пытаетесь создать что-то из исходного кода и не можете найти все зависимости, которые ему нужны. Сценарий pkg-config , который он использует для поиска файлов разработки для этих библиотек, выводит это сообщение.
Я пытался установить последнюю версию axel , и я запустил ./configure , и я получил следующее:
Итак, я попробовал:
Как очевидно, я установил openssl ( sudo apt-get install openssl ). Но на вышеприведенном выходе, как вы можете видеть, говорится: «Нет пакета» openssl ‘ найденный». Поэтому, чтобы убедиться, что я сделал:
Оказывается, мне нужен еще какой-то другой пакет, поэтому немного по поиску в Google, и я обнаружил, что мне нужно установить этот пакет:
И все это не имело ничего общего с изменением переменной env переменной pkg-config.
How to use CMake’s pkg_search_module() when compiling under Windows?
I’m programming a game which uses SDL2 and CMake. In order to link and include SDL2 I use the following CMake code:
When compiling under Linux (Fedora) this works perfectly.
But what about Windows? There I don’t have standard system locations for DLL/a files and include folders. There isn’t even pkg-config.
This is the error I get:
I used the VS 2013 generator.
1 Answer 1
As you may already know, pkg_search_module() relies on the pkg-config program in order to locate dependencies. As you point out, Windows doesn’t come with pkg-config . You might be able to install it and get things working that way, but probably a better alternative for crossplatform builds is to use CMake’s find_package() function instead. This way you can eliminate the dependency on having pkg-config installed on the developer’s machine.
CMake doesn’t come with a module for finding SDL2 so you’ll need to add that to your source directory. That’s why the above sets the CMAKE_MODULE_PATH ; you add a cmake script that works cross platform for finding SDL2 to $
This script should be able to locate SDL2 if it’s installed in a standard location. If SDL2 isn’t installed in a standard location or otherwise can’t be located by this script, the developer has to configure the appropriate CMake variables to tell CMake the appropriate location, after which the configure and build will be able to procede normally.
Package opencv was not found in the pkg-config search path
I have installed OpenCV using the instructions in https://help.ubuntu.com/community/OpenCV
now when i execute «pkg-config —cflags —libs opencv» i get this error:
how can I resolve this problem?
OK, I figured out how to solve the problem.
I made a file named «opencv.pc» and copied it to «/usr/local/lib/pkgconfig» Then i added these two lines to «.bashrc»:
that’s it! everything is OK now.
the contents of the file are:
UPDATE — 2014
it seems that the ubuntu community has completed the documentation on installing openCV, all you have to do now is to download the installation script from https://github.com/jayrambhia/Install-OpenCV/blob/master/Ubuntu/opencv_latest.sh and execute it.
9 Answers 9
From your question I guess you are using Ubuntu (or a derivate). If you use:
apt-file search opencv.pc
then you see that you have to install libopencv-dev .
After you do so, pkg-config —cflags opencv and pkg-config —libs opencv should work as expected.
- add -DOPENCV_GENERATE_PKGCONFIG=ON to build arguments
- pkg-config —cflags —libs opencv4 instead of opencv
it seems that the ubuntu community has completed the documentation on installing openCV,
so all you have to do now is to download the installation script from here and execute it.
don’t forget to make it executable:
When you run cmake add the additional parameter -D OPENCV_GENERATE_PKGCONFIG=YES (this will generate opencv.pc file)
Then make and sudo make install as before.
Use the name opencv4 instead of just opencv Eg:-
pkg-config —modversion opencv4
I got the same error when trying to compile a Go package on Debian 9.8:
The thing is that pkg-config searches for package meta-information in .pc files. Such files come from the dev package. So, even though I had libssl installed, I still got the error. It was resolved by running:
Hi first of all i would like you to use ‘Synaptic Package Manager’. You just need to goto the ubuntu software center and search for synaptic package manager.. The beauty of this is that all the packages you need are easily available here. Second it will automatically configures all your paths. Now install this then search for opencv packages over there if you found the package with the green box then its installed but else the package is not in the right place so you need to reinstall it but from package manager this time. If installed then you can do this only, you just need to fill the OpenCV_DIR variable with the path of opencv (containing the OpenCVConfig.cmake file)
Except on Step 2, use: cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/path/to/opencv/ ..
Then locate the opencv4.pc file, mine was in opencv/build/unix-install/
Now run: $ export PKG_CONFIG_PATH=/path/to/the/file