Gtk+在EP9315开发板上的移植及控件扩展开发

http://hi.baidu.com/chinalmy/blog/item/da814a5450a9e352574e0046.html

由于下学期大四要找工作了,所以比较忙。只是做一些笔记性的记录。再加上整个GUI系统移植后还有许多问题。在9月初将整理一份详尽的"How

-To"文档。但是我能保证的是,所有步骤没有隐瞒或者遗漏。如果你遇到困难,可以与我联系,很乐意与你交流。更加欢迎留言或来信批评指正,谢

谢。


====================================================

近期完成了 GTK+ 与 DirectFB 往ARM9上的移植。

我开发平台是:Magic2410(广东周立功生产)
Fedora8 (完全安装方式)

我所用的软件:Gtk-DFB相关:
1:zlib-1.2.3.tar.bz2
2:libpng-1.2.19.tar.bz2
3:glib-2.12.13.tar.bz2
4:atk-1.19.3.tar.bz2
5:freetype-2.3.5.tar.bz2
6:libxml2-2.6.30.tar.gz
7:fontconfig-2.4.2.tar.gz
8:jpegsrc.v6b.tar.gz
9:DirectFB-1.0.0.tar.gz
10:cairo-1.4.12.tar.gz
11:pango-1.16.5.tar.gz
12:gtk+-2.10.14.tar.bz2
交叉编译相关:
arm-linux-gcc-3.4.1.tar.bz2

环境变量:
export target=arm-linux
export PATH=$PATH:/home/chinalmy/gtk_dfb/arm_tool_arm_3.4.1/bin
export PREFIX=/home/chinalmy/gtk_dfb/target
export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
export PKG_CONFIG_PATH=/home/chinalmy/gtk_dfb/target/lib/pkgconfig
export PATH=$PREFIX/bin:$PATH

步骤:
---------------------------------------------------------
说明:其中“./configure”与“make”并不是直接执行的命令,后接有具体参数,为了清晰的缘故,详请见附录一。
---------------------------------------------------------
①zlib-1.2.3.tar.bz2
↓./configure
↓make clean
↓make
↓make install
---------------------------------------------------------
---------------------------------------------------------
②libpng-1.2.19.tar.bz2
↓./configure
↓make clean
↓make
↓make install
---------------------------------------------------------
---------------------------------------------------------
③glib-2.12.13.tar.bz2
↓在configure中找到“cannot run test program while cross compiling”与“cross-compiling”,并把各自所在行的下方的“{ (exit 1); exit

1; };”去掉。
↓./configure
↓修改 glib/giounix.c 中的 #include<bits/posix1_lim.h>
↓make clean
↓make
↓make install
---------------------------------------------------------
---------------------------------------------------------
④atk-1.19.3.tar.bz2
↓./configure
↓修改MakeFile 中的 glib_genmarshal 为 /usr/bin/glib_genmarshal
↓exit
↓去掉    export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
↓重新设定删减后的环境变量
↓make clean
↓make
↓make install
↓加上   export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
---------------------------------------------------------
---------------------------------------------------------
⑤freetype-2.3.5.tar.bz2
↓./configure
↓make clean
↓make
↓make install
---------------------------------------------------------
---------------------------------------------------------
⑥libxml2-2.6.30.tar.gz
↓./configure
↓make clean
↓make
↓make install
---------------------------------------------------------
---------------------------------------------------------
⑦fontconfig-2.4.2.tar.gz
↓./configure
↓exit
↓去掉    export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
↓重新设定删减后的环境变量
↓make clean
↓make
↓make install
↓加上   export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
---------------------------------------------------------
---------------------------------------------------------
⑧jpegsrc.v6b.tar.gz
↓./configure
↓make clean
↓make
↓make install
↓make install_lib
↓make install_headers
---------------------------------------------------------
---------------------------------------------------------
⑨DirectFB-1.0.0.tar.gz
↓./configure
↓make clean
↓make
↓make install
---------------------------------------------------------
⑩cairo-1.4.12.tar.gz
↓./configure
↓make clean
↓make
↓make install
↓新增以下 lib 到 cairo.pc 中: -lfreetype -lfontconfig -ldirectfb -lz -ldirect -lpng12 -lxml2 -lfusion
---------------------------------------------------------
①①pango-1.16.5.tar.gz
↓./configure
↓make clean
↓make
↓make install
↓添加以下lib到pango.pc中: -lglib-2.0 -lgmodule-2.0 -lgobject-2.0
添加以下lib到pangocairo.pc中: -lpangoft2-1.0
↓制造pango.modules(详见附录二)
---------------------------------------------------------
①②gtk+-2.10.14.tar.bz2
↓./configure
↓exit
↓去掉 export LD_LIBRARY_PATH=/home/chinalmy/gtk_dfb/target/lib
export PATH=$PREFIX/bin:$PATH
↓重新设定删减后的环境变量
↓make clean
↓make
↓make install
↓如果你在编译的过程中遇到jpeg 出错无法通过的话,sorry我还没有解决这个问题。你可以在"configure"中把他屏蔽掉(加上--without-libjpeg


↓如果你在编译的过程中遇到png 出错无法通过的话,那么请把/include/下的“zlib.h”“zconf”copy到/libpng12/下
↓制造gdk_pixbuf.loaders -> 到“etc/gtk-2.0/” 下(见附录二)
---------------------------------------------------------
---------------------------------------------------------
大结局::)
至此,整个GTK-DFB 图形系统制造完毕,目前你需要解决字体的问题,在arm9开发箱上的显示全是“小方框”。
英文字体(就是后缀ttf的东西),到处都有就不多说了;中文字体我用的是winxp下的“仿宋”(3M大小)。效果还不错`~呵呵
把字体放到你的"etc/font"下面confgure 文件所指向的文件目录下。
等等!你还需要把交叉编译工具链中的“librt*”一共四个文件copy到“/lib”中。(有可能是我所用交叉编译器的原因)

---------------------------------------------------------
附录一:
【“./configure”与“make”的具体参数】
→1:zlib
CC=arm-linux-gcc AR="arm-linux-ar rc "./configure --prefix=$PREFIX -shared
→2:libpng
CC=arm-linux-gcc ./configure --prefix=$PREFIX --host=arm-linux --build=i386-linux CFLAGS="-I$PREFIX/include" LDFLAGS="-

L$PREFIX/lib" --disable-static
→3:libjpeg
CC=arm-linux-gcc ./configure --prefix=$PREFIX --host=arm-linux --build=i386-linux --exec-prefix=$PREFIX --disable-static
make CC=arm-linux-gcc CXX=arm-linux-g++ AR="arm-linux-ar rc" STRIP=arm-linux-strip LD=arm-linux-ld RANLIB=arm-linux-ranlib

AS=arm-linux-as NM=arm-linux-nm AR2=arm-linux-ranlib
→4:freetype
CC=arm-linux-gcc ./configure --prefix=$PREFIX --host=arm-linux --build=i386-linux --disable-static
→5:DirectFB
CC=arm-linux-gcc ./configure --prefix=$PREFIX --host=arm-linux --build=i386-linux CFLAGS="-I$PREFIX/include" LDFLAGS="-

L$PREFIX/lib" CPPFLAGS="-I$PREFIX/include" --disable-x11 --enable-debug --disable-voodoo --disable-mmx --disable-see --disable-sdl

--enable-jpeg --enable-png --disable-gif --enable-freetype --disable-video4linux --disable-video4linux2 --with-gfxdrivers=none --

with-tests
→6:glib
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX
→7:atk//wei zhi xing di er bu xiu gai
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --disable-glibtest
→8:libxml2
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --without-debug --disable-static
→9:fontconfig
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype

-config --disable-static --with-confdir=$PREFIX/etc/fonts --enable-libxml2 --with-arch=arm
→10:cairo
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --disable-xlib --enable-ps=yes --enable-

png=yes --enable-directfb --disable-win32 --without-x --enable-freetype=yes --enable-pdf=yes --enable-svg=yes LDFLAGS="-

L$PREFIX/lib" CFLAGS="-I$PREFIX/include" --disable-static
→11:pango
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --without-x LDFLAGS="-L$PREFIX/lib"

CFLAGS="-I$PREFIX/include" --enable-pangocairo
→12:gtk
GLIB_GENMARSHAL=/usr/bin/glib-genmarshal PKG_CONFIG=/usr/bin/pkg-config CC=arm-linux-gcc ./configure --host=arm-linux --

build=i386-linux --prefix=$PREFIX --with-gdktarget=directfb --without-libtiff --disable-glibtest --disable-largefile --without-

libjpeg --without-libpng

附录二:gdk_pixbuf.loaders 与 pango.modules 的问题
你必须要制造这两个配置文件,不然系统是无法运行的。制造的方法是,在编译完成后,执行"/bin"下的pango-querymodules >

$PREFIX/etc/pango/pango.modules 来产生。
gdk_pixbuf.loaders 也是采用同样方法制造。
如果你实在搞不定的话,给我E-mail,我把我生成的这两个文件,发给你。

附录三:关于常见的问题,首先我建议你参考各个安装包里的 安装文档;然后你必须要对环境变量的设置小心翼翼,因为很多问题都是因为环境变量

问题导致的。还有在你动手之前,请务必保证你下载的这12个安装包必要是没有错误的,否则会做很多无用功的。:)

本文档,暂时就到这里了。如果你有问题,欢迎给我发E-mail。我会定期对此文档进行维护,最后我期待完成一份,新手都可以使用的“Step By Step”。不过步骤太多了,困难会比较大,其实我更想做一份手把手引导的“video”。这样会更容易“再显”我的工作。 希望这份文档对你有所帮助,祝你好运

你可能感兴趣的:(Gtk+在EP9315开发板上的移植及控件扩展开发)