LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1004|回复: 13

gtk2+编程时,出现这样的编译问题,高手帮忙解决!

[复制链接]
发表于 2003-9-15 13:50:07 | 显示全部楼层 |阅读模式
[root@SINWA gtk2c]# gcc -g status.c -o status `pkg-config  --cflags  --libs gtk+-2.0`
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:77: undefined reference to `main'
collect2: ld returned 1 exit status


谢谢!
发表于 2003-9-15 16:05:42 | 显示全部楼层
是不是没有main函数?!
如果代码不长就贴出来吧
发表于 2003-9-15 20:41:52 | 显示全部楼层
试试gcc -g status.c -o status `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
发表于 2003-9-15 21:25:02 | 显示全部楼层
是不是创建工程以后没有建立main.cpp文件?
呵呵,我用qt的时候常犯这个错误。
 楼主| 发表于 2003-9-16 08:14:45 | 显示全部楼层
有main.c文件
整体包含是这样的.
以下是main.c的内容:
#include <gtk/gtk.h>
#include "callbacks.h"
#include "interface.h"
int main(int argc ,gchar *argv[])
{
        GtkWidget *window;
        gtk_init(&argc,&argv);
        window = create_window();        g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(on_window_delete_event),NULL);
        gtk_window_show_all(window);
        gtk_main();
        return FALSE;
}

on_window_delete_event函数定义在文件callbacks.c中
如下:
#include <gtk/gtk.h>
#include "callbacks.h"
gboolean on_window_delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
        gtk_main_quit();
        return FALSE;
}
callbacks.h文件中并没有缺少声明
在线等,谢谢各位.
这个程序是宋国伟编著的<GTK+2.0编程范例中>中第2.6的内容.
如果感兴趣,留下Email,我给你们程序,免得再敲一遍浪费时间!
谢谢!各位了!
发表于 2003-9-16 08:54:28 | 显示全部楼层
不用敲了,你的编译方法有问题:
对于多源文件的程序一般要分别编译每个源文件:
gcc -c foo.c `pkg-config ...`
然后再link
如果源文件不多,可以直接:
gcc -o foo bar1.c bar2.c `pkg-config ....`
 楼主| 发表于 2003-9-16 09:14:05 | 显示全部楼层
噢,我用的是直接用Makefile文件:内容如下:
CC = gcc
all:main.o callbacks.o interface.o
        $(CC)-c app main.o callbacks.o interface.o `pkg-config --libs gtk+-2.0`
main.o:main.c interface.h callbacks.h
        $(CC) -c main.c `pkg-config --cflags gtk+-2.0`
interface.o:interfaces.c interface.h callbacks.h
        $(CC) -c interface.c `pkg-congif --cflags  gtk+-2.0`
callbacks.o:callbacks.c callbacks.h
        $(CC) -c callbacks.c `pkg-config --cflags gtk+-2.0`
        clean:
        rm -f *.o       

我的本意是想对单个文件进行编译,然后链接.可是,我还不会对包含头文件的原程序进行编译.所以就用作者提供的Makefile谢谢!
发表于 2003-9-16 09:21:08 | 显示全部楼层
那么就是顶贴的“-c”你错写成“-o”了
 楼主| 发表于 2003-9-16 09:43:57 | 显示全部楼层
现在的提示是这样子的.我想还是头文件的包含出了问题:
gcc -c main.c `pkg-config --cflags gtk+-2.0`
main.c: In function `main':
main.c:8: warning: assignment makes pointer from integer without a cast
main.c:9: `on_window_delete_event' undeclared (first use in this function)
main.c:9: (Each undeclared identifier is reported only once
main.c:9: for each function it appears in.)
make: *** [main.o] Error 1
 楼主| 发表于 2003-9-16 09:49:00 | 显示全部楼层
其实,对单个的文件,我都是这样编译的
gcc -g main.c -o main `pkg-config --cflags gtk+-2.0`
没出过错,可是对status.c文件单独编译就有这样的错误!
不懂了,要好好学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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