РЕДАКТИРОВАТЬ:
Показывать местоположения по умолчанию, в которых pkg-config
ищет файлы .pc, проще с помощью pkg-config --variable pc_path pkg-config
, как указано @BrettHale в этом ответе SO . При этом используется специальный виртуальный 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 (я проверил это в контейнере докера). Некоторые из этих каталогов существуют, другие нет. Вы заметите, что /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
person
liberforce
schedule
26.04.2018