主机: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的第一步,希望以后有机会能完善更加完整的文档。感兴趣的童鞋可以和我联系,一起研究。联系方式见个人资料。