分类:
2010-10-30 13:47:22
主机:debian5.0
主机gcc版本:gcc (Debian
交叉编译器: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-
6、 Tiff
tiff-
7、 Libpng
libpng-
8、 Libjpeg
jpeg-8b.tar.gz
9、 Gettext
gettext-
10、 gdk-pixbuf
gdk-pixbuf-
11、 glib
glib-
上面提供了所有的软件版本号,下载了上面的源码后,在linux上源码安装上述工具,统一步骤:解压源码,configure,make,make 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
其中CC和CXX分别为gcc和g++的交叉版本,后面加上-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-
解压后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs –shared
然后make;make install
3、 Libpng
libpng-
下载地址为:
解压后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi \
--enable-shared
然后make;make install
4、 Libjpeg
jpeg-8b.tar.gz
下载地址:
解压进入源码,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi \
--disable-static
然后make;make install
5、 Freetype
freetype-
下载地址:
解压后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi \
--disable-static
然后make;make install
6、 Directfb
DirectFB-
下载地址:
编译directfb需要有fusion头文件支持,同时,内核也要有fusion支持才可以。
linux-fusion-
下载地址:
把下载下来的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-
下载地址:
解压完成后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi \
--enable-shared
然后make;make install
8、 Glib
glib-
下载地址:
解压完成后进入源码目录,首先执行如下命令:
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
然后make;make install
9、 xml
libxml2-
下载地址:
解压完成后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi \
--disable-static
然后make;make install
10、 atk
atk-
下载地址:
解压完成后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi
然后make;make install
11、 fontconfig
fontconfig-
下载地址:
解压完成后进入目录,配置命令:
./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-
下载地址:
解压完成后进入源码目录,配置命令:
./configure --prefix=/mnt/nfs \
--build=i686 \
--host=arm-none-linux-gnueabi
然后make;make install
13、
cairo-
下载地址:
解压完成后进入源码目录,配置命令:
./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-
下载地址:
解压完成后进入源码目录,配置命令:
./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
下载地址:
解压完成后进入源码目录,首先运行如下命令:
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的第一步,希望以后有机会能完善更加完整的文档。感兴趣的童鞋可以和我联系,一起研究。联系方式见个人资料。