帮忙,看下编译错误

软件和网站开发以及相关技术探讨
回复
baggio081
帖子: 33
注册时间: 2006-11-27 20:13

帮忙,看下编译错误

#1

帖子 baggio081 » 2007-05-13 20:23

刚试着用了 下glade,编了 一个简单的界面,一个窗口,里面一个菜单,3个按钮,还有一个文本输入的控件,但是 都没写 那些信号处理的函数。。用glade生成了代码。。。然后我想只编译 下 生成的c源文件,想得到一个什么都不作的界面。
总共4个源文件callbacks.c ,,support.c ,,interface.c,,main.c..我用gcc编译,应该是先生成callback.o,,,support.o ,,interface.o和main.o。但是在各个编译的时候,都出现了错误 ,
下面是错误:

编译callbacks.c
gcc `pkg-config --cflags --libs gtk+-2.0` -o callbacks.o callbacks.c
错误:
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld 返回 1
---------------------------------------------
编译support.c
gcc `pkg-config --cflags --libs gtk+-2.0` -c support.c -o support.o
错误 :
gcc: -lgtk-x11-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgdk-x11-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -latk-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgdk_pixbuf-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lm:未使用链接器输入文件,因为链接尚未完成
gcc: -lpangocairo-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lfontconfig:未使用链接器输入文件,因为链接尚未完成
gcc: -lXext:未使用链接器输入文件,因为链接尚未完成
gcc: -lXrender:未使用链接器输入文件,因为链接尚未完成
gcc: -lXinerama:未使用链接器输入文件,因为链接尚未完成
gcc: -lXi:未使用链接器输入文件,因为链接尚未完成
gcc: -lXrandr:未使用链接器输入文件,因为链接尚未完成
gcc: -lXcursor:未使用链接器输入文件,因为链接尚未完成
gcc: -lXfixes:未使用链接器输入文件,因为链接尚未完成
gcc: -lpango-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lcairo:未使用链接器输入文件,因为链接尚未完成
gcc: -lX11:未使用链接器输入文件,因为链接尚未完成
gcc: -lgobject-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgmodule-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -ldl:未使用链接器输入文件,因为链接尚未完成
gcc: -lglib-2.0:未使用链接器输入文件,因为链接尚未完成
-----------------------------------------
编译interface.c
gcc `pkg-config --cflags --libs gtk+-2.0` -c interface.c -o interface.o
错误:
gcc: -lgtk-x11-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgdk-x11-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -latk-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgdk_pixbuf-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lm:未使用链接器输入文件,因为链接尚未完成
gcc: -lpangocairo-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lfontconfig:未使用链接器输入文件,因为链接尚未完成
gcc: -lXext:未使用链接器输入文件,因为链接尚未完成
gcc: -lXrender:未使用链接器输入文件,因为链接尚未完成
gcc: -lXinerama:未使用链接器输入文件,因为链接尚未完成
gcc: -lXi:未使用链接器输入文件,因为链接尚未完成
gcc: -lXrandr:未使用链接器输入文件,因为链接尚未完成
gcc: -lXcursor:未使用链接器输入文件,因为链接尚未完成
gcc: -lXfixes:未使用链接器输入文件,因为链接尚未完成
gcc: -lpango-1.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lcairo:未使用链接器输入文件,因为链接尚未完成
gcc: -lX11:未使用链接器输入文件,因为链接尚未完成
gcc: -lgobject-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -lgmodule-2.0:未使用链接器输入文件,因为链接尚未完成
gcc: -ldl:未使用链接器输入文件,因为链接尚未完成
gcc: -lglib-2.0:未使用链接器输入文件,因为链接尚未完成
----------------------------------------
编译main.c
gcc `pkg-config --cflags --libs gtk+-2.0` -c main.c -o main.o
错误:
main.c:29: 错误: ‘PACKAGE_DATA_DIR’ 未声明 (在此函数内第一次使用)
main.c:29: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
main.c:29: 错误: 所在的函数内只报告一次。)
main.c:29: 错误: expected ‘)’ before string constant

-----------------------------------------

小弟就不知道怎么办了,希望大家能帮忙解答一下,谢谢了
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System

#2

帖子 5451vs5451 » 2007-05-13 21:00

第一个是因为没带 -c 参数,gcc编译了callbacks.c之后,在连接的过程中找不到程序入口点报错。此时应该已经生成了callbacks.o文件,因为在编译过程中没有出错。

第二个和第三个是因为带了 -c 参数,gcc只编译而不连接,所以在pkgconfig中不需要使用--libs。

最后一个是编译时就出错了,可能是你的main.c中没有引用某些头文件,或者语法有问题。
头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25

#3

帖子 titainium » 2007-05-14 9:03

建议用GLADE3,自己手写代码,使用libglade,呵呵。
Titainium
baggio081
帖子: 33
注册时间: 2006-11-27 20:13

#4

帖子 baggio081 » 2007-05-14 10:53

5451vs5451 写了:第一个是因为没带 -c 参数,gcc编译了callbacks.c之后,在连接的过程中找不到程序入口点报错。此时应该已经生成了callbacks.o文件,因为在编译过程中没有出错。

第二个和第三个是因为带了 -c 参数,gcc只编译而不连接,所以在pkgconfig中不需要使用--libs。

最后一个是编译时就出错了,可能是你的main.c中没有引用某些头文件,或者语法有问题。
恩,谢谢了,不过main.c还是没编译通过,不知道少什么了,再查查看吧
baggio081
帖子: 33
注册时间: 2006-11-27 20:13

#5

帖子 baggio081 » 2007-05-14 10:57

titainium 写了:建议用GLADE3,自己手写代码,使用libglade,呵呵。
哦?那换glade3看看有什么不同,用glade2不也是先生成界面,然后再添加一些回调函数吗?
antonym55
帖子: 353
注册时间: 2007-04-03 9:52
联系:

#6

帖子 antonym55 » 2007-05-14 11:00

不是有生成autogen.sh?

代码: 全选

$./autogen.sh
$make
baggio081
帖子: 33
注册时间: 2006-11-27 20:13

#7

帖子 baggio081 » 2007-05-14 15:44

antonym55 写了:不是有生成autogen.sh?

代码: 全选

$./autogen.sh
$make
哦,,刚开始的时候没发现,后来用了antogen.sh。。
但是还是想看看原来的方法行不行
fengjl026
帖子: 77
注册时间: 2007-10-20 22:18

#8

帖子 fengjl026 » 2007-10-20 22:20

我也遇到了这个问题,我查了一下好像是ui编辑器加上的,因为我的界面没有图形的文件,所以就把这句注释掉了,然后编译通过,运行也没有发现什么问题,呵呵
回复