您的位置:首页 > 其它

DFB-GTK移植到MINI2440笔记

2014-08-17 21:49 302 查看

一、 开发环境

主机: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的第一步,希望以后有机会能完善更加完整的文档。感兴趣的童鞋可以和我联系,一起研究。联系方式见个人资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: