移植GTK的過程真的很繁雜,要先編幾十個library.
過程請直接參考強者同學的網誌: GTK+ on DirectFB on Creator PXA270
遇到error時通常把message原封不動的拿到google搜尋都可以找到解決的辦法, 以下提供新手參考.
編譯glib-2.9.6時
Error: cannot run test program while cross compiling See 'config.log' for more details
Solution:
echo ac_cv_type_long_long=yes>arm-linux.cache
echo glib_cv_stack_grows=no>>arm-linux.cache
echo glib_cv_uscore=no>>arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
configure參數多加 --cache-file=arm-linux.cache
編譯atk-1.10.3時
Error: glib-genmarshal: error while loading shared libraries: /opt/DYNAMIC/lib/libglib-2.0.so.0: ELF file OS ABI invalid
Solution: 先將環境變數LD_LIBRARY改為空白, make後再復原
執行GTK程式時
Error: (!) Direct/Modules: Could not open module directory `/usr/myproj/usr/myproj/lib/directfb-1.0-0/systems'! --> No such file or directory
Solution: 可以看到路徑重複兩次, 不知道是為什麼. 自行建立link即可
Error: (!) Direct/Modules: Could not open module directory `/usr/myproj/usr/myproj/lib/directfb-1.0-0/gfxdrivers'! --> No such file or directory
Solution: 在編譯directfb的時候gfxdrivers已經選擇none, 應該是不需要額外的driver才對, make一個空的資料夾可以過
Error: GdkPixbuf-WARNING **: Cannot open pixbuf loader module file '/usr/myproj/etc/gtk-2.0/gdk-pixbuf.loaders': No such file or directory
Solution:
在target執行/usr/myproj/bin/gdk-pixbuf-query-loaders > /usr/myproj/etc/gtk-2.0/gdk-pixbuf.loaders
參考:
Error: (!) DirectFB/FBDev: Panning display failed! --> Invalid argument
Solution: (目前未解)
Error: No fonts found; this probably means that the fontconfig library is not correctly configured. You may need to edit the fonts.conf configuration file.
Solution: 修改etc/fonts/fonts.conf, 加入字型檔的路徑
然後把字型複製到預定的路徑裡面, 可以是windows的ttf
Error:
Gdk-DirectFB-WARNING **: gdk_window_set_keep_above() not implemented.
Gdk-DirectFB-WARNING **: gdk_window_set_keep_below() not implemented.
視窗畫面上的toolbar都顯示不出來, 不支是否跟這有關係
Solution: Warning而已不用理他, 強者同學說沒有window manager的觀念所以視窗不會有toolbar
http://blog.tyker.info/wordpress/archives/343
很無聊的題目,因為做起來實在很麻煩,想說至少做個記錄,給打算porting到ARM平台上的人參考。有天我忘記了也可以回頭看看…
根據所說,要把Gtk+弄到DirectFB上需要準備以下東西: GTK+, Cairo, GLib, Pango, ATK。 做了一次之後才發現那份文件寫的稍微零散,如果你要做一個非i386的版本一定會漏掉許多東西。在我安裝好ARM toolchain之後,依序做了下列動作才算作好Gtk+所需要的各種元件:
- 先build ,其中還需要用到libiconv跟libgettext。在cross compile GLib的時候可能會遇到一些麻煩,我有找到。
- 需要用到GLib的東西,所以擺它後面。
- ,選項很多我把大部分不需要的都關掉了(osx, sdl, vnc, video4linux, 所有graphic driver都不裝,input driver只安裝linuxinput, ps2mouse, keyboard)。在這裡又多裝了libjpeg(make install-lib才會把library裝好), libpng, zlib, freetype。
- 需要DirectFB當作後端,此外還需要fontconfig(configure檢查不出來,編譯的時候才知道沒有),expat跟freetype也會被fontconfig用到,裝DirectFB的時候已經先安裝freetype了,所以要再裝expat。安裝選項中把xlib跟win32 disable,再enable directfb即可。
- ,需要有Cairo,之後只需要把with-x關掉即可。
- ,我還沒裝
所以說除了那幾包主要元件之外,至少還需要, , ,, 這五個相關的header跟library,如果DirectFB要支援jpg跟png的話就還要再加上, , 。裝完了以上東西才能繼續安裝Gtk+,到這裡我也累了,如果編譯Gtk+又遇到什麼問題下次再貼上來。
- 所有我用到的版本
- atk-1.10.3
- cairo-1.4.4
- DirectFB-1.0.0
- expat-2.0.0
- fontconfig-2.4.0
- freetype-2.3.4
- gettext-0.16
- glib-2.9.6
- jpegsrv.v6b
- libiconv-1.11
- libpng-1.2.16
- pango-1.11.99
- zlib-1.2.3