РЕДАКТИРОВАТЬ:
Отображение местоположений по умолчанию, где pkg-config
ищет .pc файлы, легче сделать с pkg-config --variable pc_path pkg-config
, как указано @BrettHale в этот так ответ .При этом используется специальный виртуальный пакет pkg-config
для предоставления конфигурации pkg-config
.Это проще, чем синтаксический анализ журналов отладки или использование strace
(что спасло мой день более одного раза), но главное было научить тому, как получать информацию, когда мы не знаем, где искать.
Оригинальный ответ:
Вам не нужно устанавливать PKG_CONFIG_PATH
.Обычно пути, используемые вашим дистрибутивом, совпадают с теми, которые pkg-config
будет искать по умолчанию.
pkg-config
ищет .pc
, связанный с GTK + 3. Поскольку вы установили пакет разработки libgtk-3-dev
, вынайдите в нем .pc
файлов, которые он предоставляет, используя:
$ dpkg -L libgtk-3-dev | grep '\.pc'
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-wayland-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-unix-print-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-wayland-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-x11-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-x11-3.0.pc
Эти результаты относятся к моей системе Ubuntu 14.04, но на Ubuntu 17.10 для amd64 файл не был перемещен, он все еще:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
Теперь файл называется gtk+-3.0.pc
, поэтому имя модуля, как ожидается от pkg-config
, - это имя без расширения .pc
, которое равно gtk+-3.0
.Это помогает убедиться, что вы не указали опечатку в имени модуля.
Например,
pkg-config --modversion gtk+3.0
скажет вам, что он не может найти gtk+3.0
, и что вы должны изменитьPKG_CONFIG_PATH
, но на самом деле реальная проблема заключается в том, что это неправильное имя модуля, поскольку отсутствует символ -
.
Теперь мы запустим pkg-config
в его конфигурации по умолчанию, без настроенной PKG_CONFIG_PATH
,Это проверит поведение вашей системы по умолчанию, при этом pkg-config
будет искать только пути по умолчанию:
unset PKG_CONFIG_PATH
pkg-config --modversion gtk+-3.0
Если это вернет версию GTK +, все готово.Если у вас все еще есть сообщение об ошибке, говорящее, что оно не найдено, тогда вы можете проверить, где pkg-config
ищет по умолчанию в журналах отладки.Просто добавьте параметр --debug
:
pkg-config --debug --modversion gtk+-3.0
Это возвращает довольно подробный журнал того, где он обнаружил файлы .pc
.Вот первые несколько строк в системе Ubuntu 14.04:
Option --debug seen
Option --modversion seen
Error printing enabled by default due to use of --version, --libs, --cflags, --libs-only-l, --libs-only-L, --libs-only-other, --cflags-only-I, --cflags-only-other or --list. Value of --silence-errors: 0
Error printing enabled
Adding virtual 'pkg-config' package to list of known packages
Cannot open directory '/usr/local/lib/x86_64-linux-gnu/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/lib/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/share/pkgconfig' in package search path: No such file or directory
Scanning directory '/usr/lib/x86_64-linux-gnu/pkgconfig'
[...]
Обратите внимание на строки, начинающиеся с Cannot open directory
и Scanning directory
.Они говорят вам, куда смотрит pkg-config
.Давайте только отобразим это:
$ pkg-config --debug --modversion gtk+-3.0 2>&1 | egrep "(Cannot open|Scanning) directory"
Cannot open directory '/usr/local/lib/x86_64-linux-gnu/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/lib/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/share/pkgconfig' in package search path: No such file or directory
Scanning directory '/usr/lib/x86_64-linux-gnu/pkgconfig'
Scanning directory '/usr/lib/pkgconfig'
Scanning directory '/usr/share/pkgconfig'
Теперь у вас есть все местоположения, которые ищутся.Они одинаковы в моем 14.04 и в Ubuntu 17.04 (я проверил это в контейнере Docker).Некоторые из этих каталогов существуют, другие нет.Вы заметите, что /usr/lib/x86_64-linux-gnu/pkgconfig
есть для меня, поэтому /usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
найдено.
Если его нет для вас, тогда да, вы можете добавить его к PKG_CONFIG_PATH
:
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
Теперь должно возвращаться версия библиотеки GTK +, обнаруженная pkg-config
:
pkg-config --modversion gtk+-3.0