Компиляция gtk из исходников

Я пытаюсь скомпилировать gtk+-3.2.0, но получаю сообщение об ошибке от ./configure:

checking for GLIB - version >= 2.29.14... 
*** 'pkg-config --modversion glib-2.0' returned 2.32.4, but GLIB (2.34.0)
*** was found! If pkg-config was correct, then it is best
*** to remove the old version of GLib. You may also be able to fix the error
*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing
*** /etc/ld.so.conf. Make sure you have run ldconfig if that is
*** required on your system.
*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH
*** to point to the correct configuration files
no
configure: error: 
*** GLIB 2.29.14 or better is required. The latest version of
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.

У меня действительно есть GLIB 2.34.0 (который я тоже скомпилировал из исходников), но я не знаю, как сделать, чтобы gtk знал библиотеку. Я изменил PKG_CONFIG_PATH так, чтобы он указывал на путь, где находится новая установка glib, и после ldconfig, но это не имеет значения. изменив /etc/ld.so.conf, я действительно понятия не имею, как это сделать.


person Jack    schedule 24.11.2012    source источник
comment
Хорошо, я думаю, вам нужно удалить старую версию GLib?   -  person MiJyn    schedule 24.11.2012
comment
Но не сломаются ли другие исходники?   -  person Jack    schedule 24.11.2012
comment
Удалив старую версию glib, можно сделать исходный код, использующий такую ​​версию, некомпилируемым.   -  person Jack    schedule 24.11.2012
comment
Вероятно, нет, поскольку glib имеет обратную совместимость (особенно с минорными версиями).   -  person MiJyn    schedule 24.11.2012
comment
это зависит от того, как вы его установили   -  person MiJyn    schedule 24.11.2012
comment
Необходимо увидеть, что вы установили PKG_CONFIG_PATH и где вы установили glib для диагностики.   -  person ergosys    schedule 25.11.2012


Ответы (1)


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

В противном случае используйте диспетчер пакетов, чтобы определить, в каком пакете установлен файл .pc, который вы не хотите использовать. И удалите этот пакет. Например, в дистрибутиве на основе rpm запустите:

strace -eopen pkg-config --modversion glib-2.0 2>&1 | grep "\.pc"

Он вернет, где находится файл .pc, обнаруженный pkg-config.

open("/usr/lib64/pkgconfig/glib-2.0.pc", O_RDONLY) = 3

Затем определите, к какому пакету принадлежит этот файл:

rpm -qf /usr/lib64/pkgconfig/glib-2.0.pc

Вот результат в моей системе Mageia 2:

lib64glib2.0-devel-2.32.4-1.1.mga2

Удаление этого пакета приведет к удалению мешающего .pc. Однако вам следует предпочесть метод PKG_CONFIG_PATH в случае, если удаление пакета также пытается удалить другие зависимости, которые вы все еще хотите использовать.

person liberforce    schedule 25.11.2012
comment
Большое спасибо. Вчера починил, но здесь забыл заметить. Кроме того, какая версия должна возвращать 'pkg-config --modversion gtk + -3.0`? Я получаю 3.2.1, и gtk-demo работает нормально, но когда я пытаюсь скомпилировать какую-то программу, я получаю - person Jack; 25.11.2012
comment
/usr/lib/libgtk-3.so: undefined reference to gdk_broadway_window_get_type '/usr/lib/libgtk-3.so: неопределенная ссылка на gdk_x11_device_manager_xi_get_type' /usr/lib/libgtk-3.so: undefined reference to gdk_broadway_get_last_seen_time' /usr/lib/libgtk-3.so: неопределенная ссылка на gdk_extension_mode_get_type' /usr/lib/libgtk-3.so: undefined reference to gdk_x11_device_xi_get - person Jack; 25.11.2012
comment
Исправлено при установке gtk 3.0.0. Еще раз большое спасибо. Еще одна проблема: некоторые виджеты плохо прорисованы; Я получаю ошибки типа Theme parsing error: gtk-widgets.css: 817:65: Could not recognize the image file format как это исправить? - person Jack; 26.11.2012
comment
Взгляните на этот файл и проверьте в строке 817, какой формат файла он пытается открыть. Затем убедитесь, что у вас есть загрузчик gdk-pixbuf для этого формата файла. - person liberforce; 26.11.2012