2014-02-26 122 views
1

我正在構建一個簡單的GUI應用程序,我已經成功部署並運行在我的Raspberry PI開發板上。但是,由於OpenCV依賴於GTK + v2.0的問題,我必須將我的應用程序移植到舊版本的GTK +。我已經熟悉更改包含路徑等等,以及庫makefile中的庫鏈接命令。但是,當我進行所有必要的更改時,在構建期間會發生致命錯誤。將GTK3.0項目移植到GTK2.0

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 

我已經證實,丟失的文件,gdkconfig.h存在我的GTK + V3.0安裝:

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

但對於我的GTK + 2.0版的安裝沒有這樣的文件。我已經通過apt-get安裝了最新版本,但仍然沒有運氣。

有沒有解決這個問題的方法?

謝謝。

+0

「但是我的GTK + v2.0安裝沒有這樣的文件」:有兩種選擇。 GTK2包裝被破壞(如果文件完全缺失)或文件位於其他目錄中,並且包含路徑出現問題。 – jku

+0

嗯,實際上有第三種選擇:確保你的構建完全從早期的GTK3構建配置中清除:如果你不確定,嘗試一個全新的源碼簽出。 – jku

+0

OpenCV> = 3.0.0與GTK + 3兼容。不與'libopencv_highgui'鏈接也可以做到這一點。如果有其他選擇可用,您絕不應降級應用程序。 – liberforce

回答

1

事實證明,某些文件夾,包括那些在路徑中有arm-linux-gnueabihf的文件夾,在他們應該擁有的時候沒有被我手動包含。最後,我SSH'ed到RPI裝置,並且從下面的命令複製的輸出:

pkgconfig --clfags --libs gtk+-2.0 

我然後複製所有的包括目錄語句(即:那些具有-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 

所以,簡而言之,這工作,我甚至不必改變我的代碼的單一行。現在一切正常。