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

交叉编译器下载地址:

http://www.codesourcery.com/sgpp/lite/arm/portal/release1293

二、     宿主机软件

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

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上源码安装上述工具,统一步骤:解压源码,configure,make,make install。

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

三、     交叉编译

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

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

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

exportPKG_CONFIG_PATH=/mnt/nfs/lib/pkgconfig

exportCPPFLAGS=-I/mnt/nfs/include

exportCFLAGS=-I/mnt/nfs/include

exportCXXFLAGS=-I/mnt/nfs/include

exportLDFLAGS=-L/mnt/nfs/lib

 

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

 

1、 Tslib

Tslib下载地址:http://github.com/kergoth/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

然后make;make install

3、 Libpng

libpng-1.4.4.tar.gz

下载地址为:http://www.libpng.org/pub/png/libpng.html

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

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

--build=i686 \

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

      --enable-shared

然后make;make install

4、 Libjpeg

jpeg-8b.tar.gz

下载地址:http://artfiles.org/sunfreeware.com/pub/freeware/SOURCES/jpeg-8b.tar.gz

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

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

    --build=i686 \

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

--disable-static

       然后make;make install

5、 Freetype

freetype-2.4.3.tar.bz2

下载地址:http://sourceforge.net/projects/freetype/files/

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

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

    --build=i686 \

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

--disable-static

       然后make;make install

6、 Directfb

DirectFB-1.4.6.tar.gz

下载地址:http://www.directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.6.tar.gz

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

linux-fusion-8.1.2.tar.gz

下载地址:http://www.directfb.org/downloads/Core/linux-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的错误。

配置完成后make;make install

7、 Tiff

tiff-3.8.2.tar.gz

下载地址:http://www.libtiff.org/

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

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

    --build=i686 \

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

--enable-shared

       然后make;make install

8、 Glib

glib-2.26.0.tar.bz2

下载地址:http://ftp.gnome.org/pub/gnome/sources/glib/2.26/glib-2.26.0.tar.bz2

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

echoglib_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

然后make;make install

9、 xml

libxml2-2.6.30.tar.bz2

下载地址:http://ftp.gnome.org/pub/gnome/sources/libxml2/2.6/libxml2-2.6.30.tar.bz2

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

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

    --build=i686 \

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

--disable-static

       然后make;make install

10、             atk

atk-1.32.0.tar.bz2

下载地址:http://ftp.gnome.org/pub/gnome/sources/atk/1.32/atk-1.32.0.tar.bz2

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

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

    --build=i686 \

--host=arm-none-linux-gnueabi

       然后make;make install

11、             fontconfig

fontconfig-2.8.0.tar.gz

下载地址:http://www.fontconfig.org/release/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

       然后make;make install

12、             pixman

pixman-0.20.0.tar.gz

下载地址:http://cairographics.org/releases/pixman-0.20.0.tar.gz

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

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

    --build=i686 \

--host=arm-none-linux-gnueabi

       然后make;make install

13、             cairo

cairo-1.10.0.tar.gz

下载地址:http://cairographics.org/releases/cairo-1.8.10.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

       然后make;make install

14、             pango

pango-1.28.3.tar.bz2

下载地址:http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.3.tar.bz2

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

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

    --build=i686 \

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

--with-x=no

       然后make;make install

15、             gtk+

gtk+-2.90.0.tar.bz2

下载地址:http://ftp.gnome.org/pub/gnome/sources/gtk+/2.90/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

然后make;make 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字库。

 

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

 

 

 

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

你可能感兴趣的:(qt,opencv,交叉编译,SEED-DIM3517)