分类: LINUX
2011-11-08 08:36:41
转自:
说明:我参考的是这篇文章
... r%3Ddigest
我用到的软件包如下:
tslib1.4, glib-2.12.13, atk-1.20.0, jpegsrc.v6b, zlib-1.2.3
libpng-1.2.24, expat-2.0.1, freetype-2.3.5, libxml2-2.6.30, fontconfig-2.5.0
tiff-3.7.4, DirectFB-1.1.1, cairo-1.4.12, pango-1.16.4, gtk+-2.10.14
所有的软件包我都传到纳米盘那了啊,需要的去那下,地址如下:
... 5cc3fd5502
我使用的环境如下:
操作系统:ubuntu8.10
编译器:arm-linux-gcc3.4.1
首先我按照那篇文章一步步的进行操作的确是成功编译了directfb+gtk,然后我就想自己写一个脚本来把那些操作贯穿起来,方便后来人用到编译,可是我在编译到第14个软件包pango的时候却失败了,前13个软件包都成功编译了的,有兴趣的来完善这个脚本,我现在就把那个脚本贴出来
对了,还有我虽然成功交叉编译出来了,但是由于我现在没有LCD屏,所以也没把程序在板子上跑起来过,有LCD屏的朋友可以试下看看,别忘了分享你的成果哦,成功编译出来的朋友如果想移植到板子上跑,那篇文章有说到,我在这就不贴出来了,因为我也没试过,后面我会把参考的那篇文章的pdf文件传上来
先准备下环境吧:
gtk-work
gtk-work
source
script
work
把那15个软件包放到source目录下,把我写的脚本放到script目录下,让脚本具有可执行权限
script
755 build-gtkdfb.sh
切换到root用户,不要用sudo,执行脚本
/home/xhy/gtk-work/work
脚本里的目录需要更改啊,我放的软件目录是在/home/xhy/gtk-work/source
你要改为你自己的
脚本代码如下:
代码:
#!/bin/sh
# tslib1.4, glib-2.12.13, atk-1.20.0, jpegsrc.v6b, zlib-1.2.3
# libpng-1.2.24, expat-2.0.1, freetype-2.3.5, libxml2-2.6.30, fontconfig-2.5.0
# tiff-3.7.4, DirectFB-1.1.1, cairo-1.4.12, pango-1.16.4, gtk+-2.10.14
export SOURCE_PATH=/home/xhy/gtk-work/source
export PREFIX=/opt/gtkdfb
export LDFLAGS=-L$PREFIX/lib
export CFLAGS="-g -I$PREFIX/include"
export PKG_CONFIG_PATH=${INSTALL_PATH}/lib/pkgconfig
export CC=arm-linux-gcc
BUILDDIR=`pwd`
# 1.交叉编译tslib, 依赖的库: 无
echo "=========开始交叉编译tslib========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/tslib-1.4.tar.gz
cd tslib
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache --enable-inputapi=no
make
make install
# 2.交叉编译glib, 依赖的库: 无
echo "=========开始交叉编译glib========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/glib-2.12.13.tar.bz2
cd glib-2.12.13
echo "ac_cv_type_long_long=yes" > arm-linux.cache
echo "glib_cv_stack_grows=no" >> arm-linux.cache
echo "glib_cv_uscore=no" >> arm-linux.cache
echo "ac_cv_func_posix_getpwuid_r=yes" >> arm-linux.cache
./configure --host=arm-linux --build=i686-pc-linux --prefix=$PREFIX --cache-file=arm-linux.cache
make
make install
# 3.交叉编译atk, 依赖的库: glib
echo "=========开始交叉编译atk========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/atk-1.20.0.tar.bz2
cd atk-1.20.0
./configure --host=arm-linux --prefix=$PREFIX
make
make install
# 4.交叉编译jpeg, 依赖的库: 无
echo "=========开始交叉编译jpeg========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=$PREFIX --enable-shared --enable-static
mkdir $PREFIX/man
mkdir $PREFIX/man/man1
sed -i -e 's/CC= gcc/CC= arm-linux-gcc/g' Makefile
sed -i -e 's/AR= ar rc/AR= arm-linux-ar rc/g' Makefile
sed -i -e 's/AR2= ranlib/AR2= arm-linux-ranlib/g' Makefile
make
make install
# 5.交叉编译zlib, 依赖的库: 无
echo "=========开始交叉编译zlib========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/zlib-1.2.3.tar.bz2
cd zlib-1.2.3
sed -i -e 's/CC= gcc/CC= arm-linux-gcc/g' configure
./configure --prefix=$PREFIX --shared
make
make install
# 6.交叉编译libpng, 依赖的库: 无
echo "=========开始交叉编译libpng========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/libpng-1.2.24.tar.tar
cd libpng-1.2.24
./configure --host=arm-linux --prefix=$PREFIX
make
make install
# 7.交叉编译expat, 依赖的库: 无
echo "=========开始交叉编译expat========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --host=arm-linux --prefix=$PREFIX
make
make install
# 8.交叉编译freetype, 依赖的库: 无
echo "=========开始交叉编译freetype========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/freetype-2.3.5.tar.tar
cd freetype-2.3.5
./configure --host=arm-linux --prefix=$PREFIX
make
make install
# 9.交叉编译libxml, 依赖的库: 无
echo "=========开始交叉编译libxml========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/libxml2-2.6.30.tar.gz
cd libxml2-2.6.30
./configure --host=arm-linux --prefix=$PREFIX
make
make install
# 10.交叉编译fontconfig, 依赖的库: freetype, libxml2
echo "=========开始交叉编译fontconfig========="
cd ${BUILDDIR}
export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2
export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"
tar xzf ${SOURCE_PATH}/fontconfig-2.5.0.tar.gz
cd fontconfig-2.5.0
./configure --host=arm-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=arm
make
make install
# 11.交叉编译tiff, 依赖的库: jpeg, zlib
echo "=========开始交叉编译tiff========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/tiff-3.7.4.tar.gz
cd tiff-3.7.4
./configure --host=arm-linux --prefix=$PREFIX --enable-shared
make
make install
# 12.交叉编译DirectFB, 依赖的库: 无
echo "=========开始交叉编译DirectFB========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/DirectFB-1.1.1.tar.gz
cd DirectFB-1.1.1
./configure --host=arm-linux --prefix=$PREFIX --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --disable-tiff --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11
make
make install
# 13.交叉编译cairo, 依赖的库: freetype,zlib
echo "=========开始交叉编译cairo========="
cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/cairo-1.4.12.tar.gz
cd cairo-1.4.12
./configure --host=arm-linux --prefix=$PREFIX --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --disable-svg --enable-png
make
make install
# 14.交叉编译pango, 依赖的库: glib, freetype, xml
echo "=========开始交叉编译pango========="
cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/pango-1.16.4.tar.bz2
cd pango-1.16.4
sed -i -e 's/have_cairo=false/have_cairo=true/g' configure
sed -i -e 's/have_cairo_png=false/have_cairo_png=true/g' configure
sed -i -e 's/have_cairo_ps=false/have_cairo_ps=true/g' configure
sed -i -e 's/have_cairo_pdf=false/have_cairo_pdf=true/g' configure
sed -i -e 's/have_cairo_freetype=false/have_cairo_freetype=true/g' configure
./configure --host=arm-linux --prefix=$PREFIX --enable-cairo --without-x
make
make install
# 15.交叉编译gtk, 依赖的库: glib, pango, atk, cairo, DirectFB
echo "=========开始交叉编译gtk========="
cd ${BUILDDIR}
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
export CPPFLAGS="-I$PREFIX/include"
tar xjf ${SOURCE_PATH}/gtk+-2.10.14.tar.bz2
cd gtk+-2.10.14
./configure --host=arm-linux --prefix=$PREFIX --with-gdktarget=directfb --without-x --without-libtiff
make
make install
echo "=========交叉编译全部结束========="