在ARM9(s3c2410)上移植GUI系统(gtk+ 与 DirectFb)

来源:互联网 发布:手机诊股软件 编辑:程序博客网 时间:2024/05/21 08:46
 ====================================================
文档名:在ARM9(s3c2410)上移植GUI系统(gtk+ 与 DirectFb)

文档撰写人:卢名扬(chinalmy)

第一次完成日期:2008_08_06

E-mail:chinalmy@yahoo.com.cn

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

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

谢。

     另外,这份文档只有参考价值。如果你完全按照步骤来完成交叉编译工作,难度比较大。如果你比较忙的话,我很乐意把交叉编译好的“GTK-DFB”文档,与你分享,当作一个参考。欢迎来信索取。
====================================================

近期完成了 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); exit1; };”去掉。
↓./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 ByStep”。不过步骤太多了,困难会比较大,其实我更想做一份手把手引导的“video”。这样会更容易“再显”我的工作。希望这份文档对你有所帮助,祝你好运!~