我相信这不是重复的问题,在发布此问题之前我已经看过所有问题/答案。我想我这里的情况有所不同。
我使用Ubuntu 12.04并下载GTK 2 和 3。我从 GNOME 网站复制了一个简单的 GTK 源代码。但是当我在终端中使用这个命令时:
gcc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
我明白了:
hello.c:(.text+0x17): undefined reference to `gtk_init'
hello.c:(.text+0x23): undefined reference to `gtk_window_new'
hello.c:(.text+0x47): undefined reference to `gtk_main_quit'
hello.c:(.text+0x5b): undefined reference to `g_signal_connect_data'
hello.c:(.text+0x67): undefined reference to `gtk_widget_show'
hello.c:(.text+0x6c): undefined reference to `gtk_main'
这是我的代码:
#include <gtk/gtk.h>
int
main (int argc,
char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
我不确定是否会出现错误,因为我有两个版本的 GTK+ 或者什么。
我是 Ubuntu/Linux 中应用程序开发的新手。
您应该使用出现在库之前的源文件进行编译gcc hello.c $(pkg-config --cflags --libs gtk+-3.0) -o hello
,原因是链接器的行为,即除非在编译之前看到该库的符号,否则它不会链接库。
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)