GTK Hello World的一些问题。

按照一些1.0的GTK文档会有问题,下面转载这篇文章很好的说明了问题。

以下是最常见的helloworld 
--------------------------- 
#include <gtk/gtk.h> 
int main( int   argc, 
        char *argv[] ) 

   GtkWidget *window; 
   gtk_init (&argc, &argv); 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
   gtk_widget_show  (window); 
   gtk_main (); 
   return 0; 

你可以用 gcc 编译上面的程序: 
gcc base.c- obase`gtk-config--cflags--libs` 

------------------------------- 
唉  我被害惨了  以上过程有2个错 
导致编译结果如下 
# gcc base.c -o base `gtk -config --cflags --libs` 
bash: gtk: command not found 
base.c:1:21: 错误:gtk/gtk.h:没有那个文件或目录 
base.c: In function ‘main’: 
base.c:4: 错误:‘GtkWidget’ 未声明 (在此函数内第一次使用) 
base.c:4: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其 
base.c:4: 错误:所在的函数内只报告一次。) 
base.c:4: 错误:‘window’ 未声明 (在此函数内第一次使用) 
base.c:6: 错误:‘GTK_WINDOW_TOPLEVEL’ 未声明 (在此函数内第一次使用) 

以上信息是希望能被更好地被百度收录 帮助更多的像我一样的初学者 

出错原因: 
----------------------------- 
在大部分的开发图书中的第一个例子都有一个头文件#include <gtk/gtk.h>,也就是这句话,让N多人在第一次接触GTK编程就感到受到挫折啊~~~我来解释一下吧 

    首先是 gtk/gtk.h 这个东西,你是怎么看待/这个东西的呢?其实他是指 gtk.h的上一层文件夹,哈哈,这也是为什么你在gcc编译的时候总是显示出无法找到这个头文件。OK,解决办法,首先要保证你安装了gtk这个包。 
安装包的方法: 
    从你的安装盘(或者去www.gtk.org)找到一个文件叫做gtk+版本号.tar.gz/.tar/.rpm的文件并且选择安装相关联的库。然后同样方法安装Gnome库(www.gnome.org)。 
    恩,恩。这样你就安装好了这个库了。但是你的 gtk.h又安装在那里呢? 
在系统中搜索gtk.h,找到你的系统安装的地方(我用的Centos,我的地址为gtk-2.o/gtk/gtk.h)把这个地址替换 #include <gtk-2.0/gtk/gtk.h>,恩,库的链接现在做好了。但是你如果按照书上的编译我估计还是失败。 
命令:gcc base.c -o base `gtk-config --cflags --libs` 
我来解释一下哈,-o后面那个东西是最后链接出来的东西如果你没有这个参数的话,系统会自动生成a.out文件,`这个符号是1左面那个,而不是分号右面那个。gtk-config是1.0用的命令,明白了吧,刚才我写的可是gtk-2.0/gtk/gtk.h,所以这个命令应该将gtk-config修改为pkg-config gtk+-2.0。 (注:这个方法很强大,用pkg-config 来显示-L -l -I等这些配置,省却了编译移植时候的麻烦)

`pkg-config gtk+-2.0 --cflags --libs`


现在运行吧~./base,呵呵,看到你的东西了吧。 

另外,在编译代码之前,你可以先 

    到/usr/include确认一下gtk.h文件的路径。 

怎么把/usr/include/gtk-2.0/gtk这个目录加到头文件搜索目录表里啊? 

    只要#include <gtk-2.0/gtk/gtk.h>呗。 
或者gcc的时候 -I/usr/include/gtk-2.0/gtk,代码里面 #include <gtk.h>

Leave a Reply

Your email address will not be published. Required fields are marked *