交叉编译 Webkit
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交叉编译 Webkit (基于 GTK + DFB )
最近为了将webkit移植到arm上奋战了2个多星期,才终于将近20个库全部编译成功。在这个过程中碰到了无数困难,而且网上的很多文章都有问题,即使能将gtk勉强编译成功,也无法使用,故在此将一些信息与需要的人分享。
首先有些说明,为了将webkit裁剪的小些,编译中很多功能都disable了,比如多线程。如果需要的人,可以仔细检查每一个configure的选项,将需要的功能enable。
其次,此文中需要注意的是pango和gtk的install,本文中提到的olo是intel 的arm的机顶盒,感兴趣的同志可以找我:P。因此directFB就有一些我们自己开发的东西,所以编译过程就不放上来了。
1.需要的库
Name Version
Zlib 1.2.3
Libpng 1.2.10
Tiff 3.8.2
Libtool 1.5.24
Jpegb V6b
Freetype 2.1.10
Libxml 2.6.30
Fontconfig 2.4.2
Olo directFB In PDK
Glib 2.12.0
Atk 1.20.0
Cairo 1.4.2
Pango 1.16.2
Gtk+ 2.10.1
ICU4c-3-6
Libxslt 1.1.22
Libsqlite 3.5.6
Curl7.18.0
Webkt r29711
2.Prepare Working environment
2.1.1 Source cross.sh
You can find cross.sh under root directory of subversion. Below gives one example, you can do modification as you need.
export WORK_DIR=`pwd`
mkdir -p $WORK_DIR/rootfs
export ROOTFS_DIR=$WORK_DIR/rootfs
export
PKG_CONFIG_PATH=$ROOTFS_DIR/usr/local/lib/pkgconfig:$ROOTFS_DIR/usr/l ib/pkgconfig
if [ ! -e "$ROOTFS_DIR/usr/local/include" ]; then mkdir -p $ROOTFS_DIR/usr/local/include;fi;
if [ ! -e "$ROOTFS_DIR/usr/local/lib" ]; then mkdir -p
$ROOTFS_DIR/usr/local/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/etc" ]; then mkdir -p
$ROOTFS_DIR/usr/local/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/bin" ]; then mkdir -p
$ROOTFS_DIR/usr/local/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/share" ]; then mkdir -p
$ROOTFS_DIR/usr/local/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/man" ]; then mkdir -p
$ROOTFS_DIR/usr/local/man; fi;
if [ ! -e "$ROOTFS_DIR/usr/include" ]; then mkdir -p
$ROOTFS_DIR/usr/include; fi;
if [ ! -e "$ROOTFS_DIR/usr/lib" ]; then mkdir -p $ROOTFS_DIR/usr/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/etc" ]; then mkdir -p $ROOTFS_DIR/usr/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/bin" ]; then mkdir -p $ROOTFS_DIR/usr/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/share" ]; then mkdir -p $ROOTFS_DIR/usr/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/man" ]; then mkdir -p $ROOTFS_DIR/usr/man; fi;
2.1.2 Build each components in dependency order
All the components (libraries) need to build have internal dependency, we’d better build it as ordered below.
2.1.2.1 Build zlib
export ARCH=arm
export CC=$ARCH-linux-gcc
./configure --prefix=$ROOTFS_DIR/usr --shared && make && make install
2.1.2.2 Build libpng
export ARCH=arm
CC=$ARCH-linux-gcc
rm -rf ./$ARCH-linux.cache
echo ac_cv_fnuc_malloc_O_nonull=yes>>$ARCH-linux.cache
./configure --cache-file=$ARCH-linux.cache --prefix=/$ROOTFS_DIR/usr --build= i686-pc-linux-gnu --host=$ARCH-linux --target=$ARCH-linux CFLAGS=-I/$ROOTFS_DIR/usr/include LIBS="-L/$ROOTFS_DIR/usr/lib -lz"
Comment the “#define malloc rpl_malloc” line in config.h. Otherwise, when build pango, it will report can not find rpl_malloc.
make && make install
2.1.2.3 Build tiff
export ARCH=arm
CC=$ARCH-linux-gcc
./configure \
--prefix=$ROOTFS_DIR/usr --enable-shared --build= i686-pc-linux-gnu --target=$ARCH-linux --host=$ARCH-linux \
"CFLAGS=-I$ROOTFS_DIR/usr/include" \
"LIBS=-L$ROOTFS_DIR/usr/lib -lz" && make && make install
2.1.2.4 Build libtool
export ARCH=arm
CC=$ARCH-linux-gcc
./configure \
--prefix=$ROOTFS_DIR/usr --build= i686-pc-linux-gnu
--target=$ARCH-linux --host=$ARCH-linux && make && make install
2.1.2.5 Build Jpegb
1.