QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1747|回复: 15

第一次编写gtk程序编译出问题.

[复制链接]
发表于 2004-2-7 19:53:05 | 显示全部楼层 |阅读模式
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` \ `pkg-config --libs gtk+-2.0
hello示例程序编译出问题:
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` \
`pkg-config --libs gtk+-2.0`

gcc: pkg-config --cflags gtk+-2.0pkg-config --libs gtk+-2.0: 没有那个文件或目录
hello.c:1:21: gtk/gtk.h: 没有那个文件或目录
hello.c:5: error: syntax error before '*' token
hello.c: In function `hello':
hello.c:8: warning: implicit declaration of function `g_print'
hello.c: At top level:
hello.c:11: error: syntax error before "delete_event"
hello.c:11: error: syntax error before '*' token
hello.c:14: warning: return type defaults to `int'
hello.c: In function `delete_event':
hello.c:23: error: `TRUE' undeclared (first use in this function)
hello.c:23: error: (Each undeclared identifier is reported only once
hello.c:23: error: for each function it appears in.)
hello.c: At top level:
hello.c:27: error: syntax error before '*' token
hello.c: In function `destroy':
hello.c:30: warning: implicit declaration of function `gtk_main_quit'
hello.c: In function `main':
hello.c:37: error: `GtkWidget' undeclared (first use in this function)
hello.c:37: error: `window' undeclared (first use in this function)
hello.c:38: error: `button' undeclared (first use in this function)
hello.c:41: warning: implicit declaration of function `gtk_init'
hello.c:44: warning: implicit declaration of function `gtk_window_new'
hello.c:44: error: `GTK_WINDOW_TOPLEVEL' undeclared (first use in this function)
而pkg-config --cflags gtk+-2.0
和pkg-config --libs gtk+-2.0又能找到include等。
发表于 2004-2-7 23:47:36 | 显示全部楼层
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0`
回复

使用道具 举报

 楼主| 发表于 2004-2-13 10:59:20 | 显示全部楼层
我这样做了可是不行啊。
回复

使用道具 举报

发表于 2004-2-13 13:23:53 | 显示全部楼层
你装了gtk2的开发包没有?
回复

使用道具 举报

发表于 2004-2-15 19:35:23 | 显示全部楼层
先运行一下这个
pkg-config --cflags --libs gtk+-2.0
看结果如何。
回复

使用道具 举报

发表于 2004-2-22 00:04:40 | 显示全部楼层
今天晚上我也在学编第一个gtk+程序
也遇到了你所遇到的问题
不过我成功解决了
所谓找不到gtk/gtk.h
那是因为在/usr/include中没有gtk这个目录
gtk/gtk.h而是在/usr/include/gtk-2.0中(我的系统是,你自己找一下看有没有类似的目录,该目录中应该有gdk,gtk等几个目录)
把这些目录(即gtk,gdk等)move到/usr/include中
然后再把/usr/lib/glib/glibconfigtool.h(大概是吧,记忆力差了点,刚做了就忘了)也一起move到/usr/include中去
(你编译一下,看是什么错误,是找不到哪个文件,然后你用whereis命令找一下就是了)
大概就可以了
之所以有这个问题
是因为gcc找include文件时,只在/usr/include   /usr/share/include等几个目录中找,不对其他目录或者更深入一点找
回复

使用道具 举报

发表于 2004-2-22 22:59:26 | 显示全部楼层
惨了惨了,照你说的去做后,运行只有三行的程序出现数不完的错误,在终端里看不到头,也不知道有没有找到gtk/gtk.h这个文件.
另外有glibconfigtool.h这个文件吗?我找到的是/usr/lib/glib/glib/include/glibconfig.h,我把这个复制过去了.现在怎么办啊??
回复

使用道具 举报

发表于 2004-2-23 00:00:32 | 显示全部楼层
[quote:ee652dc528="hibernate"]今天晚上我也在学编第一个gtk+程序
也遇到了你所遇到的问题
不过我成功解决了
所谓找不到gtk/gtk.h
那是因为在/usr/include中没有gtk这个目录
gtk/gtk.h而是在/usr/include/gtk-2.0中(我的系统是,你自己找一下看有没有类似的目录,该目录中应该有gdk,gtk等几个目录)
把这些目录(即gtk,gdk等)move到/usr/include中
然后再把/usr/lib/glib/glibconfigtool.h(大概是吧,记忆力差了点,刚做了就忘了)也一起move到/usr/include中去
(你编译一下,看是什么错误,是找不到哪个文件,然后你用whereis命令找一下就是了)
大概就可以了
之所以有这个问题
是因为gcc找include文件时,只在/usr/include   /usr/share/include等几个目录中找,不对其他目录或者更深入一点找[/quote]
误认子弟,呵呵
gtk目录在/usr/include/gtk-2.0下是正确的,这是gtk2的头文件,/usr/include/gtk-1.2下也有一个gtk,但是这是gtk1.2的
gtk-config或者pkg-config gtk+-2.0可以决定用哪个头文件,也就是-由I参数
回复

使用道具 举报

发表于 2004-2-23 13:10:30 | 显示全部楼层
原来的是正确的啊??
我还改来改去.  不过编译还是说找不到gtk/gtk.h文件,到底要怎么样才行啊
回复

使用道具 举报

发表于 2004-2-23 15:23:35 | 显示全部楼层
把pkg-config gtk+-2.0 --libs --cflags的输出结果贴出来
回复

使用道具 举报

发表于 2004-2-23 18:59:58 | 显示全部楼层
[xiaocong@nova xiaocong]$ pkg-config gtk+-2.0 --libs --cflags
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
[xiaocong@nova xiaocong]$

贴出来了,什么问题啊
回复

使用道具 举报

发表于 2004-2-23 23:02:12 | 显示全部楼层
好像是正确的。。
gcc helloworld.c -o helloworld `pkg-config gtk+-2.0 --libs --cflags`试试
回复

使用道具 举报

发表于 2004-2-24 09:58:02 | 显示全部楼层
哈哈可以了,用楼上的方法行了.不过我第一次也是那样的好像不行,我昨天把GTK2给卸载了重装了,差点把系统给搞萎了,我是强行卸载了半天也没卸载好,等不急了就注消,可注消半天也注消不了,干脆按电源了,后来就进不了Xwindows了,还好有光盘在,从关盘里又装了个GTK2,一切OK了.真是好险啊.这已经是我第三次进不了Xwindows,第一次害得我重装,第二次有人帮忙,第三次自己解决了,高兴.看来学Linux还是多搞搞的好,管他什么呢,搞得不行就重装吗没什么大不了的,这样才有进步啊,呵呵     
回复

使用道具 举报

发表于 2004-2-24 21:21:05 | 显示全部楼层
一般不必重装的,我的系统只有在一次pqmagic把分区给搞坏了才重装的。
回复

使用道具 举报

发表于 2004-2-25 12:18:26 | 显示全部楼层
不不是重装系统,是重装GTK2软件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 23:09 , Processed in 0.050805 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表