编译 GTK3 程序的问题

编译 GTK3 程序的问题

我最近决定学习 gtk+,所以我安装了包含所有必要库的 gtk3 开发包,然后我编写了一个简单的程序测试,它应该简单地显示一个 gtk 窗口,并使用以下命令对其进行编译:

gcc `pkg-config --cflags --libs gtk+-3.0` main.c -o test

问题在于链接时我得到了对所有函数调用的未定义的引用:(

    /tmp/ccVQOyCZ.o: In function `main':
main.c:(.text+0x1f): undefined reference to `gtk_init'
main.c:(.text+0x29): undefined reference to `gtk_window_new'
main.c:(.text+0x43): undefined reference to `g_type_check_instance_cast'
main.c:(.text+0x64): undefined reference to `g_signal_connect_data'
main.c:(.text+0x70): undefined reference to `gtk_widget_show'
main.c:(.text+0x75): undefined reference to `gtk_main'
/tmp/ccVQOyCZ.o: In function `OnDestroy':
main.c:(.text+0x96): undefined reference to `gtk_main_quit'
collect2: ld returned 1 exit status

瞧,如果有人有解决方案......

答案1

尝试重新排序 gcc 选项,即使用:

gcc main.c -o test `pkg-config --cflags --libs gtk+-3.0`

答案2

重新排序适用于 gtk 2。

根据一本好书“Simon Long 的 C 和 GUI 编程简介”的建议,我安装了 gtk 2,使用以下命令:

sudo apt-get install libgtk2.0-dev

但在测试了书中的例子后,我得到了以下错误帕斯卡·霍罗评论道。

对于我在 Raspberry Pi 4 上的 Ubuntu 20.04 上的 gtk 2,这个重新排序 gcc 选项有效。

gcc main.c -o test `pkg-config --cflags --libs gtk+-2.0`

我收到了一些弃用警告,例如这些https://github.com/FreeSpacenav/spnavcfg/issues/7但没有错误,我的代码正在运行:)

本书的所有示例对我来说都是在 Raspbian 操作系统上运行的,但我正在测试 Ubuntu mate 20.04,我认为这是一个更好的操作系统,它速度更快,外观也很漂亮。火狐浏览器运行得很好,速度非常快。

在此主题中,您可以了解为什么顺序如此重要https://stackoverflow.com/questions/33362579/building-gtk-in-eclipse

相关内容