为什么gtk+;这么复杂?

为什么gtk+;这么复杂?,gtk,glib,pango,Gtk,Glib,Pango,我正试图在ubuntu 14.04上安装gtk+(3.20.3)。我下载了gtk+包并运行configure命令。我得到 Requested 'atk >= 2.15.1' but version of Atk is 2.10.0 Requested 'pango >= 1.37.3' but version of Pango is 1.36.3 Requested 'cairo >= 1.14.0' but version of cairo is 1.13.1 Requ

我正试图在ubuntu 14.04上安装gtk+(3.20.3)。我下载了gtk+包并运行configure命令。我得到

Requested 'atk >= 2.15.1' but version of Atk is 2.10.0

Requested 'pango >= 1.37.3' but version of Pango is 1.36.3

Requested 'cairo >= 1.14.0' but version of cairo is 1.13.1

Requested 'cairo-gobject >= 1.14.0' but version of cairo-gobject is 1.13.1
在安装了glib所要求的其他一些先决条件之后,我还收到了上面的glib版本不匹配错误

我现在反复地安装上面的每一个,每一个都要求其他的东西。对于ATK,我得到了一些错误,比如“./ATK/.libs/libatk-1.0.so:对'g_type\u check\u instance\u is\u basicly\u a'的未定义引用,我必须尝试解决这个问题

问题是为什么它如此复杂?我做错什么了吗?没有类似“apt get install gtk”之类的步骤。我已经花了两个多小时,还没有完成


我只是想安装gtk+,因为我需要一个用于特定C程序的简单UI。我没有意识到安装会如此困难。

从源代码构建GTK+的过程并不比构建其他项目的过程复杂。GTK+具有各种依赖关系,而不是将所有内容捆绑到自己的存储库中;这意味着您需要检查依赖项列表(在
configure.ac
文件中指定)并安装或生成它们

如果您想建立一个开发环境,建议使用jhbuild,它类似于Python的
virtualenv
jhbuild
命令知道在GNOME平台中构建各种项目所需的所有依赖关系,包括GTK+,并将下载、构建和安装这些依赖关系到一个单独的前缀中,从而允许您在该前缀中构建自己的代码


您可以通过阅读.

快速开始jhbuild。从源代码构建GTK+的过程并不比构建其他项目的过程复杂。GTK+具有各种依赖关系,而不是将所有内容捆绑到自己的存储库中;这意味着您需要检查依赖项列表(在
configure.ac
文件中指定)并安装或生成它们

如果您想建立一个开发环境,建议使用jhbuild,它类似于Python的
virtualenv
jhbuild
命令知道在GNOME平台中构建各种项目所需的所有依赖关系,包括GTK+,并将下载、构建和安装这些依赖关系到一个单独的前缀中,从而允许您在该前缀中构建自己的代码


通过阅读。

@ebassi是正确的,假设您需要更新版本的GTK+,或者想要开发GTK+本身,您可以快速开始jhbuild。如果您只想编写一个GTK应用程序,并且对版本不挑剔,请查看Ubuntu软件包
libgtk-3-dev

@ebassi是正确的,假设您需要更新版本的GTK+,或者想要开发GTK+本身。如果您只想编写GTK应用程序,并且对版本不挑剔,请查看Ubuntu包
libgtk-3-dev

使用jhbuild。它将使所有依赖关系变得更加简单,并将GTK+安装在一个私有名称空间中,这样它就不会干扰系统的其余部分。它将使所有依赖关系变得更加简单,并将GTK+安装在私有名称空间中,这样它就不会干扰系统的其余部分。我走上下载GTK+代码和构建的道路,陷入了一个循环。我现在有了一个env,在那里我下载并构建了大部分GTK+代码,但没有pango片段(无法解析那里的依赖关系)。我会试试看。我还尝试安装libgtk-2-dev库&稍后也安装libgtk-3-dev库。我想我现在的环境相当混乱,因为我用GTK+获得的一些示例程序给出了一些未解决的函数。接受这个答案是“为什么这么复杂?”答案是:-)新来者链接有一个输入错误。应该是。使用GTK+库在C应用程序上构建UI所需的linkI中缺少“r”。我走上下载GTK+代码和构建的道路,陷入了一个循环。我现在有了一个env,在那里我下载并构建了大部分GTK+代码,但没有pango片段(无法解析那里的依赖关系)。我会试试看。我还尝试安装libgtk-2-dev库&稍后也安装libgtk-3-dev库。我想我现在的环境相当混乱,因为我用GTK+获得的一些示例程序给出了一些未解决的函数。接受这个答案是“为什么这么复杂?”答案是:-)新来者链接有一个输入错误。应该是。正如我在对@ebassi的评论中提到的,linkMy env中缺少的“r”有点混乱。我想你的建议应该能帮助我构建我的C代码。谢谢。不幸的是,GTK的完整文档地狱使得阅读源代码、单步调试并将printf添加到核心库中以了解发生了什么,因此每个认真使用GTK开发的人不久或稍后都会需要自己的库。如果可以将C文件添加到您的IDE中以获得完整的源代码浏览,那就更好了,但是如果不迁移到cmake,目前就没有办法做到这一点。正如我在对@ebassi的评论中提到的,我的环境有点混乱。我想你的建议应该能帮助我构建我的C代码。谢谢。不幸的是,GTK的完整文档地狱使得阅读源代码、单步调试并将printf添加到核心库中以了解发生了什么,因此每个认真使用GTK开发的人不久或稍后都会需要自己的库。如果可以将C文件添加到IDE中以获得完整的源代码浏览,那就更好了,但是如果不迁移到cmake,目前就没有办法做到这一点。