Как PKG-CONFIG выбирает между двумя файлами .pc?

У меня есть два файла .pc для glib-2.0

/usr/lib/x86_64-linux-gnu/pkgconfig/glib-2.0.pc
/usr/local/lib/pkgconfig/glib-2.0.pc

Они различаются местом расположения включаемых файлов.

/usr/lib/x86... points to /usr/include
/usr/local/lib... points to /usr/local/include

Это вызывает проблему при запуске:

pkg-config --cflags gtk+-3.0

это возвращает следующие местоположения поиска glib-2.0:

-I/usr/local/include/glib-2.0 
-I/usr/local/lib/glib-2.0/include 

тогда как мой менеджер пакетов установил библиотеки glib в

/usr/include/glib 

Вопрос 1: Почему PKG-CONFIG выбирает второе местоположение по сравнению с первым? Как я могу это изменить?

Вопрос 2: наличие двух одинаковых файлов .pc - это ненормально?

Вопрос 3: можно ли безопасно удалить один из файлов .pc?

Примечание:

  1. Я не хочу копировать библиотеку glib в / local /, так как менеджер пакетов упустит это из виду.
  2. Я не хочу добавлять -I / usr / include при запуске gcc, поскольку я ожидаю, что PKG-CONFIG будет работать правильно. (Я также думаю, что это вызовет другие проблемы, которые мне придется вручную изменить)

person Community    schedule 28.02.2016    source источник


Ответы (1)


Вы можете использовать переменную среды PKG_CONFIG_LIBDIR, чтобы переопределить каталог поиска по умолчанию.

Также существует PKG_CONFIG_PATH, который можно использовать как список каталогов, разделенных двоеточиями, для поиска файлов .pc.

См. Страницу руководства pkg-config для получения дополнительной информации.

person juzzlin    schedule 28.02.2016
comment
Спасибо, изменение PKG_CONFIG_LIBDIR для управления поиском по умолчанию позволяет мне выбрать нужный мне файл .pc. - person ; 28.02.2016
comment
Разве нельзя использовать PKG_CONFIG_LIBDIR с несколькими каталогами? У меня есть несколько пакетов в корне кросс-компилятора, а некоторые - в /usr/local/lib/pkgconfig, но я хочу избежать конфликтов с какими-либо пакетами в /usr/lib/pkgconfig. - person Hashim Aziz; 25.03.2019