C 从源代码编译gtk

C 从源代码编译gtk,c,build,compilation,gtk,gtk3,C,Build,Compilation,Gtk,Gtk3,我正试图编译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

我正试图编译
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/.

我真的有Glib2.34.0(我也从源代码中编译过),但我不知道如何让gtk了解这个库。我已经将PKG_CONFIG_PATH更改为指向新glib安装的路径,在
ldconfig
之后,但没有任何区别。通过修改/etc/ld.so.conf,我真的不知道该怎么做

PKG_CONFIG_PATH
应包含要使用的GLib版本的.pc文件所在目录的路径

否则,请使用软件包管理器检测哪个软件包安装了不想使用的.pc文件。然后取下那个包裹。例如,在基于rpm的发行版上,运行:

strace -eopen pkg-config --modversion glib-2.0 2>&1 | grep "\.pc"
它将返回pkg config检测到的.pc文件的位置

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
方法。

PKG_CONFIG_PATH
应该包含要使用的GLib版本的.pc文件所在目录的路径

否则,请使用软件包管理器检测哪个软件包安装了不想使用的.pc文件。然后取下那个包裹。例如,在基于rpm的发行版上,运行:

strace -eopen pkg-config --modversion glib-2.0 2>&1 | grep "\.pc"
它将返回pkg config检测到的.pc文件的位置

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\u CONFIG\u PATH
方法,所以我认为你必须删除一个旧版本的GLib?但它不会破坏另一个源代码?删除旧版本的GLib可能会使使用这种版本的源代码不可编译,因为GLib非常向后兼容(特别是小版本),这取决于你如何安装itOkay,所以我认为你必须删除一个旧版本的GLib?但它不会破坏另一个源代码?删除旧版本的GLib可能会使使用这种版本的源代码不可编译,因为GLib非常向后兼容(特别是小版本),这在很大程度上取决于你如何安装iThanks。我昨天把它修好了,但我忘了注意到这一点。另外,“pkg config--modversion gtk+-3.0”将返回什么版本?我得到了3.2.1和gtk演示工作良好,但是当我试图编译一些程序时,我得到了
/usr/lib/libgtk-3.so:undefined reference to
gdk\u broadway\u window\u get\u type'/usr/lib/libgtk-3.so:undefined reference to
gdk\u x11\u device\u manager\u xi\u get\u type'/usr/libgtk-3.so:undefined reference to
gdk\u broadway\u\u get\u get\u-time'/usr/libgtk-3.so:undefined reference to
gdk_-extension_-mode_-get_-type'/usr/lib/libgtk-3.so:未定义对
gdk_-x11_-device_-xi_-get_-type'的引用`修复了安装gtk 3.0.0的问题。再次非常感谢。还有一个问题:一些小部件绘制得不好;我遇到了类似
主题解析错误:gtk-widgets.css:817:65:无法识别图像文件格式的错误
如何修复它?查看该文件,并在第817行检查它试图打开的文件格式。然后检查您是否有gdk pixbuf加载程序用于该文件格式。非常感谢。我昨天把它修好了,但我忘了注意到这一点。另外,“pkg config--modversion gtk+-3.0”将返回什么版本?我得到了3.2.1和gtk演示工作良好,但是当我试图编译一些程序时,我得到了
/usr/lib/libgtk-3.so:undefined reference to
gdk\u broadway\u window\u get\u type'/usr/lib/libgtk-3.so:undefined reference to
gdk\u x11\u device\u manager\u xi\u get\u type'/usr/libgtk-3.so:undefined reference to
gdk\u broadway\u\u get\u get\u-time'/usr/libgtk-3.so:undefined reference to
gdk_-extension_-mode_-get_-type'/usr/lib/libgtk-3.so:未定义对
gdk_-x11_-device_-xi_-get_-type'的引用`修复了安装gtk 3.0.0的问题。再次非常感谢。还有一个问题:一些小部件绘制得不好;我遇到了类似
主题解析错误:gtk-widgets.css:817:65:无法识别图像文件格式的错误
如何修复它?查看该文件,并在第817行检查它试图打开的文件格式。然后检查您是否有该文件格式的gdk pixbuf加载程序。