将GTK3.0项目移植到GTK2.0

时间:2014-02-26 01:57:07

标签: c opencv makefile gtk gtk2

我正在构建一个简单的GUI应用程序,我已成功部署并运行在我的Raspberry PI开发板上。但是,由于OpenCV依赖于GTK + v2.0的问题,我必须将我的应用程序反向移植到旧版本的GTK +。我已经熟悉改变包含路径等等,以及我的makefile中的库链接命令。但是,当我进行所有必要的更改时,在构建期间会发生致命错误。

Building dependencies file for main.o
In file included from /opt/rpi/usr/include/gtk-2.0/gdk/gdkscreen.h:32:0,
             from /opt/rpi/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:31,
             from /opt/rpi/usr/include/gtk-2.0/gdk/gdk.h:32,
             from /opt/rpi/usr/include/gtk-2.0/gtk/gtk.h:32,
             from inc/ui.h:8,
             from main.c:10:
/opt/rpi/usr/include/gtk-2.0/gdk/gdktypes.h:55:23: fatal error:
   gdkconfig.h: No such file or directory

我已确认我的GTK + v3.0安装缺少文件gdkconfig.h

find /opt/rpi/usr/include -iname "gdkconfig*"
./gtk-3.0/gdk/gdkconfig.h

但是我的GTK + v2.0安装没有这样的文件。我已经通过apt-get安装了最新版本,但仍然没有运气。

这个问题有什么解决方案吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

事实证明,某些文件夹(包括路径中包含arm-linux-gnueabihf的文件夹)并未由我手动包含在应有的文件夹中。最后,我将SSH连接到RPI设备,并复制以下命令的输出:

pkgconfig --clfags --libs gtk+-2.0

然后我复制了所有include目录语句(即:以-I开头的那些语句)并创建了一个包含该大量字符串的变量,并为所有库包含做了类似的操作。以上命令的输出包含在下面。

-pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/freetype2 -I/usr/include/libpng12  -lgtk-x11-2.0 -lgdk-x11-2.0 
-latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0
-lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0

简而言之,这很有效,我甚至不需要改变我的代码。现在一切正常。