Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525994
  • 博文数量: 87
  • 博客积分: 4086
  • 博客等级: 上校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 15:55
文章分类

全部博文(87)

文章存档

2012年(3)

2010年(13)

2009年(7)

2008年(64)

我的朋友

分类:

2010-10-30 13:47:22

DFB-GTK移植到MINI2440笔记

一、      开发环境

主机:debian5.0

主机gcc版本:gcc (Debian 4.3.2-1.1) 4.3.2

交叉编译器:arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

交叉编译器下载地址:

二、      宿主机软件

由于交叉编译过程中需要用到一些宿主机软件,首先把它安装好,以免在后面编译时遇到问题。由于这次交叉编译所使用的所有软件包都是最新版本,因此宿主机软件也尽量使用较新版本,以免由于版本匹配出现问题。

1、  Autoconf

autoconf-2.68.tar.bz2

2、  Automake

automake-1.11.tar.bz2

3、  Libtool

libtool-2.4.tar.gz

4、  Ncurses

ncurses-5.7.tar.gz

5、  Zlib

zlib-1.2.5.tar.bz2

6、  Tiff

tiff-3.8.2.tar.gz

7、  Libpng

libpng-1.4.4.tar.gz

8、  Libjpeg

jpeg-8b.tar.gz

9、  Gettext

gettext-0.18.1.1.tar.gz

10、              gdk-pixbuf

gdk-pixbuf-2.22.0.tar.bz2

11、              glib

glib-2.26.0.tar.bz2

上面提供了所有的软件版本号,下载了上面的源码后,在linux上源码安装上述工具,统一步骤:解压源码,configuremakemake install

需要注意的是,在configure的时候加上—prefix=/usr参数,不然在后面交叉编译的时候会出现找不到某些工具的问题;另外,执行make install的时候需要root权限。

三、      交叉编译

首先在终端中执行下面的命令,初始化一些环境变量,为交叉编译做准备:

export CC="arm-none-linux-gnueabi-gcc -mabi=aapcs-linux -march=armv4t"

export CXX="arm-none-linux-gnueabi-g++ -mabi=aapcs-linux -march=armv4t"

export PKG_CONFIG_PATH=/mnt/nfs/lib/pkgconfig

export CPPFLAGS=-I/mnt/nfs/include

export CFLAGS=-I/mnt/nfs/include

export CXXFLAGS=-I/mnt/nfs/include

export LDFLAGS=-L/mnt/nfs/lib

 

其中CCCXX分别为gccg++的交叉版本,后面加上-mabi=aapcs-linux –march=armv4t是因为我们下载的交叉编译器默认是按照armv5构架输出的,在mini2440上无法运行。另外,我们安装的目标地址是/mnt/nfs,因此首先要在你的/mnt目录下建立一个普通用户有写权限的nfs目录。

 

1、  Tslib

Tslib下载地址:

我下载下来的包为kergoth-tslib-1.0-45-gd9ff92d.tar.gz,解压这个包,然后进入源码目录,首先运行如下命令:

./autogen.sh

完成后运行如下命令进行配置:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --enable-shared \

    --disable-static \

    --enable-linear \

    --enable-dejitter \

    --disable-linear-h2200 \

    --enable-variance \

    --enable-pthres \

    --disable-ucb1x00 \

    --disable-cy8mrln-palmpre \

    --disable-corgi \

    --disable-collie \

    --disable-h3600 \

    --disable-mk712 \

    --disable-arctic2 \

    --disable-tatung \

--enable-input

       如果一切没有问题,那就make,完成后make install

2、  Zlib

zlib-1.2.5.tar.bz2,下载地址为zlib.net

解压后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs –shared

然后makemake install

3、  Libpng

libpng-1.4.4.tar.gz

下载地址为:

解压后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

--build=i686 \

--host=arm-none-linux-gnueabi \

      --enable-shared

然后makemake install

4、  Libjpeg

jpeg-8b.tar.gz

下载地址:

解压进入源码,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

--disable-static

       然后makemake install

5、  Freetype

freetype-2.4.3.tar.bz2

下载地址:

解压后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

--disable-static

       然后makemake install

6、  Directfb

DirectFB-1.4.6.tar.gz

下载地址:

编译directfb需要有fusion头文件支持,同时,内核也要有fusion支持才可以。

linux-fusion-8.1.2.tar.gz

下载地址:

把下载下来的fusion加入内核中,具体怎么加入可以看里面的说明文档,然后这里要做的是提取出fusion.h头文件,放到/mnt/nfs/include/linux目录下。如果configure的时候在/mnt/nfs/include/linux目录下没有这个fusion.h头文件,那么directfb将会使用自己内部的fusion,我使用过这种方式,但是没有成功,因此务必使用单独的fusion模块。

解压完成directfb后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --disable-osx \

    --disable-x11 \

    --disable-network \

    --enable-multi \

    --enable-fbdev \

    --enable-zlib \

    --disable-gif \

    --disable-vnc \

    --with-gfxdrivers=none \

--with-inputdrivers=tslib,keyboard

即使你的平台上没有keayboard,也需要加入这个kerboard,不然在启动gtk应用程序的时候会出现can’t get request id的错误。

配置完成后makemake install

7、  Tiff

tiff-3.8.2.tar.gz

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

--enable-shared

       然后makemake install

8、  Glib

glib-2.26.0.tar.bz2

下载地址:

解压完成后进入源码目录,首先执行如下命令:

echo glib_cv_stack_grows=yes > arm-linux.cache

    echo glib_cv_uscore=no >> arm-linux.cache

    echo ac_cv_func_posix_getpwuid_r=no >> arm-linux.cache

echo ac_cv_func_posix_getgrgid_r=no >> arm-linux.cache

       然后进行配置:

       ./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --disable-selinux \

    --disable-gtk-doc-html \

    --with-threads=posix \

--cache-file=arm-linux.cache

然后makemake install

9、  xml

libxml2-2.6.30.tar.bz2

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

--disable-static

       然后makemake install

10、              atk

atk-1.32.0.tar.bz2

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

--host=arm-none-linux-gnueabi

       然后makemake install

11、              fontconfig

fontconfig-2.8.0.tar.gz

下载地址:

解压完成后进入目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --enable-shared \

    --enable-libxml2 \

    --with-arch=arm \

--with-freetype-config=/mnt/nfs/bin/freetype-config

       然后makemake install

12、              pixman

pixman-0.20.0.tar.gz

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

--host=arm-none-linux-gnueabi

       然后makemake install

13、              cairo

cairo-1.10.0.tar.gz

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --disable-static \

    --enable-xlib=no \

    --enable-win32=no \

    --enable-directfb=yes \

--with-x=no

       然后makemake install

14、              pango

pango-1.28.3.tar.bz2

下载地址:

解压完成后进入源码目录,配置命令:

./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

--with-x=no

       然后makemake install

15、              gtk+

gtk+-2.90.0.tar.bz2

下载地址:

解压完成后进入源码目录,首先运行如下命令:

sed -i s/'if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then'/'if $PKG_CONFIG $PANGO_PACKAGES; then'/g configure

echo gio_can_sniff=yes > arm-linux.cache

       然后配置命令:

       ./configure --prefix=/mnt/nfs \

    --build=i686 \

    --host=arm-none-linux-gnueabi \

    --enable-gtk-doc-html=no \

    --with-x=no \

    --with-gdktarget=directfb \

--cache-file=arm-linux.cache

然后makemake install

四、      运行前的准备

1、  pango配置

在开发板的/mnt/nfs/etc/目录下建立pango目录,然后在开发板上运行如下命令:

pango-querymodules > /mnt/nfs/etc/pango/pango.modules

其中pango-querymodules是在编译pango库的时候在宿主机的/mnt/nfs/bin目录下生成的,直接从这个地方拷贝到开发板后就可以运行了。

2、  字体

编译完成后,在宿主机的/mnt/nfs/etc/fonts目录下会有一个fonts.conf文件,把这个文件要放到开发板的/mnt/nfs/etc/fonts目录下。

3、  字库

对照宿主机的配置,在开发板的/usr/share/fonts目录下建立一个truetype目录,这个目录下面放入ttf字库。

 

做完上面的工作,gtkhello world程序就可以运行起来了。但是gtk3-demo的运行还有点问题,会导致signal 11的问题。具体的解决方法还有待于进一步研究。

 

 

 

这个文档是一个初步文档,只是成功运行gtk的第一步,希望以后有机会能完善更加完整的文档。感兴趣的童鞋可以和我联系,一起研究。联系方式见个人资料。

阅读(7746) | 评论(6) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-01-12 10:44:01

是怎么解决那个问题的呢》 我也是遇到 正在苦恼中

chinaunix网友2011-01-12 10:43:58

是怎么解决那个问题的呢》 我也是遇到 正在苦恼中

chinaunix网友2011-01-12 10:43:55

是怎么解决那个问题的呢》 我也是遇到 正在苦恼中

yqliu292010-11-14 19:25:58

另外,tinyx+gtk也成功移植到mini2440,但是效率还不能让人满意,希望能改善!

yqliu292010-11-14 19:24:55

现在dfb+gtk已经完全移植好了到mini2440开发板,解决了caught signal 11问题!