Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1107109
  • 博文数量: 276
  • 博客积分: 8317
  • 博客等级: 少将
  • 技术积分: 2329
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-12 08:17
个人简介

http://ads.buzzcity.net/adpage.php?partnerid=40096

文章分类

全部博文(276)

文章存档

2013年(1)

2012年(38)

2011年(102)

2010年(85)

2009年(45)

2008年(5)

分类: LINUX

2010-04-05 21:41:27

参考文献1:http://blog.csdn.net/kendych/archive/2008/09/18/2947638.aspx
参考文献2:
参考文献3:http://blog.csdn.net/absurd/category/228434.aspx
参考文献4:http://hi.baidu.com/chinalmy/blog/item/da814a5450a9e352574e0046.html
藏文地址1:_h/blog/item/e415151f82a45564f724e46d.html
藏文地址2:_h/blog/item/9cd8a010061bf6fbc3ce7901.html

说明:这里主要参考了文献1,虽然编译后还有许多不足,但是交叉后的基本没啥大问题,哈哈。对于包的版本选择,考虑了依赖的关系,所以对于依赖包选择了最新的,不过在编译gtk+时,好像新版本有较大的改动,因此这里选择了gtk+-2.12.9。文中有一个不足的地方就是安装的路径了,因为这个路径是要加载到板子上的,所以要自行考虑。

包的下载地址:
1、tslib:tslib是cvs的版本,所以只能在网络上找了
2、tiff : ftp://ftp.gtk.org/pub/gtk/v2.10/dependencies/tiff-3.7.4.tar.gz
3、jpegsrc.v6b :ftp://ftp.gtk.org/pub/gtk/v2.10/dependencies/
4、libpng-1.2.33 :
5、glib-2.19.0 :ftp://ftp.gtk.org/pub/glib/2.19/
6、pango-1.20.2 :ftp://ftp.gtk.org/pub/pango/1.20/
7、gtk+-2.12.9 :
8、atk-1.24.0 :
9、cairo-1.8.4 :
10、DirectFB-1.3.0 :
11、expat-2.0.1 :
12、fontconfig-2.6.0 :
13、freetype-2.3.7 :
14、libxml2-2.6.31 :
15、pixman-0.12.0 :
16、zlib-1.2.3 :
这里有很多的包,但是我们要理清顺序和依赖关系象jpegsrc.v6b,libpng是图像的包,如不需要,可以考虑不下载,下载时要注意哪些是必须的包,哪些不是必要的包

1、tslib 1.4

export PREFIX=/usr/gtkdfb
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache
make
make install
编译完成后可以在目标位置看到4个文件夹

2、glib-2.19.0
export LDFLAGS=-L$PREFIX/lib
export CFLAGS="-g -I$PREFIX/include"
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

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
echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache
在网路上有些人是遇到4个错误,可能本人比较特殊,呵呵。编译多次,每次都是5个的,至于如何处理,请参考文献3中对于glib的详细分析,接着操作:
CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --cache-file=arm-linux.cache
make
make install
交叉编译成功后在目标位置多出个/share文件夹

3、atk-1.24.0

CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX
make
make install

4、jpeg-6b
export CC=arm-linux-gcc
CC=arm-linux-gcc ./configure   --host=arm-linux --prefix=$PREFIX
修改生成的Makefile文件:
       # The name of your C compiler:
       CC= gcc 该成 CC=arm-linux-gcc (根据你自己交叉编译器的位置修改)
       # library (.a) file creation command
       AR= ar rc 该成 AR= arm-linux-ar rc (同上)
       # second step in .a creation (use "touch" if not needed)
       AR2= ranlib 该成 AR2=arm-linux-ranlib (同上)
mkdir $PREFIX/man
mkdir $PREFIX/man/man1
make
make install
make install-lib

5、zlib-1.2.3

CC=arm-linux-gcc ./configure --prefix=$PREFIX -shared
make
make install

6、libpng-1.2.33

CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX
make
make install

7、expat-2.0.1
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX
make
make install

8、freetype-2.3.7
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX
make
make install

9、libxml2-2.6.31
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX
make
make install

10、fontconfig-2.6.0
export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2
export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=arm
make
make install

11、tiff-3.7.4
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --enable-shared
make
make install

12、DirectFB-1.3.0
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --with-gfxdrivers=none --enable-png --enable-jpeg --enable-tiff --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11
make
make install

13、pixman-0.12.0
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX
make
make install

14、cairo-1.8.4
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --disable-svg --enable-png
make
make install

15、pango-1.20.2
修改configure文件,将下面一些参数改成true
have_cairo=true
have_cairo_png=true        
have_cairo_ps=true
have_cairo_pdf=true
have_cairo_freetype=true
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --enable-cairo --without-x
make
make install

16、gtk+-2.12.9
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
export CPPFLAGS="-I$PREFIX/include"
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --with-gdktarget=directfb --without-x --without-libtiff
make
make install

在./configure时可能会出现错误,这是由于./configure的选项的原因,所以只要跟改下,以下仅是2中参考方案:
1、CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --with-gdktarget=directfb --without-libtiff --disable-glibtest --disable-largefile --without-libpng

2、CC=arm-linux-gcc ./configure --host=arm-linux --build=i386-linux --prefix=$PREFIX --with-gdktarget=directfb --without-libtiff

在开发板上运行:

1、拷贝编译后的文件(即/gtkdfb)到开发板上
以上操作有个很重要的地方,那就是Directfb的目标位置,这个将直接影响到使用,呵呵
由于我的目标位置在 /usr/gtkdfb, 因此我要将文件挂载在相同的位置,这是因为Directfb使用时默认查找的就是目标位置,如果目标位置没有相关文件,就会报以下的错误:
(!) DirectFB/core/system: No system found!
(#) DirectFBError [gdk_display_open: DirectFBCreate]: No (suitable) implementation found!

2、编写脚本
在运行之前,还要做几个脚本(保存成tslib.sh和gtkdbf.sh),脚本1用于开发板上的tslib指定环境,脚本2用于pc环境编译程序和开发板的gtk环境。脚本1和脚本2要根据自己的情况修改,以下可能只适合我。脚本1的修改请参见:%5Fh/blog/item/3e45ee247496a22cd407428e.html
脚本1
#!/bin/bash
export TSLIB_ROOT=/usr/gtkdfb
export TSLIB_TSDEVICE=/dev/h3600_tsraw  
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib

脚本2:
#!/bin/bash
export PREFIX=/usr/gtkdfb
export CFLAGS="-g -I$PREFIX/include"
export LDFLAGS=-L$PREFIX/lib
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2
export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"
export LDFLAGS="-L$PREFIX/lib -lts -Wl,-rpath,$PREFIX/lib"
export CPPFLAGS="-I$PREFIX/include"

现在在开发板上运行脚本1后,就可以运行/gtkdfb/bin/目录下的ts_calibrate进行tslib的校正

3、构造2个文件:
这2个文件的位置在:
    /usr/gtkdfb/etc/pango/pango.modules
    /usr/gtkdfb/etc/gtk-2.0/gdk-pixbuf.loaders   
使用以下方法构造,不然运行是会提示错误:
    pango-querymodules > $PREFIX/etc/pango/pango.modules
    gdk-pixbuf-query-loaders > /usr/gtkdfb/etc/gtk-2.0/gdk-pixbuf.loaders


4、编写directfbrc
简易的directfbrc文件如下:
system=fbdev
fbdev=/dev/fb0
mode=240x320
depth=16
pixelformat=RGB16
保存成 .directfbrc(是隐藏文件,注意有个"点") ,并保存到$HOME目录下(直接cd,切换到的目录即是$HOME目录)
这里可以根据运行后的警告和提示,或者自身对开发板的了解情况进行修改。
具体的可以参考:_h/blog/item/cb7e332a62200a9c033bf614.html

5、解决字体问题
当没有正确显示字体,显示是方框,这里是由于编译时使用的是PC系统的字体库,当我移植时却没有了字体库,也就是那种后缀是ttf的文件,所以要拷个字体库到开发板上。查看/gtkdfb/etc/fonts下的fonts.conf,使字库和文件中描述的位置对应上。可以看到如下内容:

    /usr/share/fonts
    ~/.fonts
/usr/share/fonts就是我们的字体库位置(pc的字库也在/usr/share/fonts路径下),从PC上拷字体库到开发板的该目录下(/usr/share/fonts)

6、运行gtk示例程序
在运行脚本1和脚本2后,运行/gtkdfb/bin/目录下的gtk-demo,即gtk的示例程序。

在pc上编译程序
在pc上运行脚本2以后:
arm-linux-gcc -o hello hello.c -lts -Wl,-rpath,$PREFIX/lib `pkg-config gtk+-2.0 --cflags --libs`
编译后tslib已经自动包含在其中,呵呵。拷到开发板即可运行自己的hello了。
阅读(1107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~