在 Debian 上编译 GTK 3 应用程序
Compiling GTK 3 apps on Debian
我正在尝试在我的 Debian 桌面上编译一个 GTK 程序。我安装了 libgtk-3-dev 和所有这些,但是当我去编译程序时,我得到这个错误:
$ gcc -o client client.c `pkg-config --cflags --libs glib-2.0`
client.c:6:10: fatal error: gtk/gtk.h: No such file or directory
6 | #include <gtk/gtk.h>
| ^~~~~~~~~~~
compilation terminated.
所有 GTK headers 实际上似乎都在 /usr/include/gtk-3.0
中,但即使我包含 <gtk-3.0/gtk/gtk.h>
我也会出错,因为里面的文件包含其他 GTK headers 就好像它们在正常的包含路径中一样。然后,如果我用 -I/usr/include/gtk-3.0
编译,我仍然会出错,这次是关于 glib 的。好吧,glib 文件在 /usr/include/glib-2.0
里面,这是和以前一样的问题。最后,如果我用 -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0
编译,这次我会得到这个错误:
$ gcc -o client -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 client.c `pkg-config --cflags $ --libs glib-2.0`
In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from client.c:6:
/usr/include/gtk-3.0/gdk/gdktypes.h:35:10: fatal error: pango/pango.h: No such file or directory
35 | #include <pango/pango.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
似乎是我选择的编译标志的任意组合,我得到了某种错误,所有这些都是由于 Debian 将 headers 放在 non-standard 子目录中引起的。这不是我在惹他们,这是 apt 为我安装的。
您要 pkg-config
获取 glib,您必须 pkg-config
获取 GTK+ 库:
gcc -o client client.c `pkg-config --cflags --libs gtk+-3.0`
您可以在命令行中保留 glib-2.0
,但由于 GTK+ 依赖于 glib,因此它已经包含在命令行中。
我正在尝试在我的 Debian 桌面上编译一个 GTK 程序。我安装了 libgtk-3-dev 和所有这些,但是当我去编译程序时,我得到这个错误:
$ gcc -o client client.c `pkg-config --cflags --libs glib-2.0`
client.c:6:10: fatal error: gtk/gtk.h: No such file or directory
6 | #include <gtk/gtk.h>
| ^~~~~~~~~~~
compilation terminated.
所有 GTK headers 实际上似乎都在 /usr/include/gtk-3.0
中,但即使我包含 <gtk-3.0/gtk/gtk.h>
我也会出错,因为里面的文件包含其他 GTK headers 就好像它们在正常的包含路径中一样。然后,如果我用 -I/usr/include/gtk-3.0
编译,我仍然会出错,这次是关于 glib 的。好吧,glib 文件在 /usr/include/glib-2.0
里面,这是和以前一样的问题。最后,如果我用 -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0
编译,这次我会得到这个错误:
$ gcc -o client -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 client.c `pkg-config --cflags $ --libs glib-2.0`
In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from client.c:6:
/usr/include/gtk-3.0/gdk/gdktypes.h:35:10: fatal error: pango/pango.h: No such file or directory
35 | #include <pango/pango.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
似乎是我选择的编译标志的任意组合,我得到了某种错误,所有这些都是由于 Debian 将 headers 放在 non-standard 子目录中引起的。这不是我在惹他们,这是 apt 为我安装的。
您要 pkg-config
获取 glib,您必须 pkg-config
获取 GTK+ 库:
gcc -o client client.c `pkg-config --cflags --libs gtk+-3.0`
您可以在命令行中保留 glib-2.0
,但由于 GTK+ 依赖于 glib,因此它已经包含在命令行中。