DFB GTK WEBKIT移植

DFB GTK WEBKIT 移植  

2011-04-18 10:26:50|  分类: 嵌入式系统学习 |  标签: |举报 |字号 订阅


arm-hisiv200-linux-g

export PREFIX=/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/
export PKG_CONFIG_PATH="/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/lib/pkgconfig"
export PKG_CONFIG="/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/bin/pkg-config"


1) pkgconfig-0.22

配置之前在 configure 中修改 GLIB_CFLAGS 和 GLIB_LIBS 宏

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux --with-installed-glib   --prefix=/home/opt/yizhi/install


1) jpeg-6b  (jpegsrc.v6b.tar.gz)

CC=arm-hisiv200-linux-gcc ./configure --host=arm-hisiv200-linux  --enable-static --enable-shared --prefix=$PREFIX

2) zlib-1.2.5
CC=arm-hisiv200-linux-gcc ./configure  --shared --prefix=$PREFIX



2) libpng-1.2.10

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX

配置好后,把 config.h 中的 rpl_malloc 宏的定义替换成  malloc ,否则编译其他程序会出错。

3) freetype-2.3.5

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX



4)  pixman-0.10.0
    编译 test 的时候编译不过去,在顶层 Makefile 文件中把 test 目前去掉,不编译 test

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX



5)  expat-2.0.1

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX



6)  DirectFB-1.3.0

./configure  --build=i686  --host=arm-hisiv200-linux --disable-osx  --disable-x11 --disable-network --enable-multi  --enable-fbdev    --enable-zlib   --enable-gif --disable-vnc  --with-gfxdrivers=none  --disable-debug-support --enable-jpeg --enable-png --enable-freetype  --prefix=$PREFIX

/home/opt/yizhi/install/lib/libpng12.so: undefined reference to `rpl_malloc'

这个错误,需要重新编译 libpng-1.2.10


./configure  --build=i686  --host=arm-hisiv200-linux --disable-osx  --disable-x11 --disable-network --enable-multi  --enable-fbdev    --enable-zlib   --enable-gif --disable-vnc  --with-gfxdrivers=none  --disable-debug-support --enable-jpeg --enable-png --enable-freetype  --prefix=/


在编译前,修改  dfb_config_init() 函数中配置文件的地址,修改 dfb_system_lookup() 函数中  system 中的路径




7)  libxml2-2.6.29

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX


8) fontconfig-2.4.2

export   LIBXML2_CFLAGS="-I /opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/include/libxml2"
             
export   LIBXML2_LIBS="-L/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/lib/ -lxml2"
             

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --enable-directfb --disable-xlib --disable-win32 --prefix=$PREFIX --with-freetype-config=/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/bin/freetype-config --enable-libxml2 --with-arch=arm


9) glib-2.12.13
export ARCH=arm
echo ac_cv_type_long_long=yes>>$ARCH-linux.cache
echo glib_cv_stack_grows=no>>$ARCH-linux.cache
echo glib_cv_uscore=no>>$ARCH-linux.cache
echo c_cv_func_posix_getpwuid_r=yes>>$ARCH-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>$ARCH-linux.cache

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux --enable-shared --prefix=$PREFIX --cache-file=$ARCH-linux.cache


10) atk-1.13.2/

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --prefix=$PREFIX --disable-glibtest


11) cairo-1.4.10

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --prefix=$PREFIX --enable-directfb=yes --without-x --disable-xlib --disable-xlib-xrender --disable-win32 --enable-png


12 ) gettext-0.18.1.1


./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --target=arm-linux --enable-static --enable-shared --prefix=$PREFIX




13)  pango-1.16.4



export CAIRO_CFLAGS="-fno-strict-aliasing -I$PREFIX/include/cairo -I$PREFIX/include/fontconfig -I$PREFIX/include -I$PREFIX/include/pixman-1 -I$PREFIX/include/freetype2 -I$PREFIX/include/libpng12"
export CAIRO_LIBS="-L$PREFIX/lib -lcairo"
export GLIB_CFLAGS="-I$PREFIX/include -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include"
export GLIB_LIBS="-L$PREFIX/lib -lgobject-2.0 -lgmodule-2.0 -lglib-2.0"
export FONTCONFIG_CFLAGS="-I$PREFIX/include/fontconfig -I$PREFIX/include/freetype2"
export FONTCONFIG_LIBS="-L$PREFIX/lib -lfontconfig"
export FREETYPE_LIBS="-L$PREFIX/lib -lfreetype -lz"
export FREETYPE_CONFIG="${PREFIX}/bin/freetype-config"
export CAIRO_PREFIX=$PREFIX


在配置之前,修改配置文件的 FREETYPE_CONFIG  和 GLIB_CFLAGS 宏定义

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --prefix=$PREFIX --without-x




14) gtk+-2.10.14  

echo gio_can_sniff=yes >arm-linux.cache
export BASE_DEPENDENCIES_LIBS="-L$PREFIX/lib -lpangocairo-1.0 -lpango-1.0 -lcairo -ljpeg -lpng12 -lpangoft2-1.0"


./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --prefix=$PREFIX  --with-gdktarget=directfb --without-libtiff --disable-glibtest --disable-largefile --with-included-loaders=jpeg,gif,png,xpm --without-libjasper --without-x --enable-debug=no --cache-file=arm-linux.cache --disable-cups




15) icu4c-3_8_1


什么是 ICU,如何得到源代码?
(ICU)International Components for Unicode Library

http://download.icu-project.org/files/icu4c/
终于可以从来看到官方下载地址喽



这个比较特殊,先编译一个pc版本,然后把bin目录重命名为bin-host,再交叉编译
./configure
make
cp -r  bin bin.linux
cp -r  data data.linux
cp -r  tools tools.linux
make  distclean

./configure  --build=i686-pc-linux --host=arm-hisiv200-linux --target=arm-linux  --enable-shared --prefix=$PREFIX

make
#will fail: /bin/sh: ../bin/icupkg: cannot execute binary file

cp -r bin bin.arm
cp -r data data.arm
cp -r bin.linux/* bin
cp -r data.linux/* data

make
此时生成的 uconv 是 x86 的,重新编译生成 arm 的
rm bin/uconv

make

cp bin/uconv bin.arm
cp bin.arm/* bin
cp bin.linux/pkgdata bin
rm lib/*so*

make install



16) curl-7.21.4

CC=arm-hisiv200-linux-gcc ./configure --build= i686-pc-linux-gnu --target=arm-linux --host=arm-hisiv200-linux --disable-curldebug --disable-ipv6 --prefix=$PREFIX --with-zlib=$PREFIX



17) webkit-r29711



export LDFLAGS="-L$PREFIX/lib -Wl,-rpath=$PREFIXlib"

CC=arm-hisiv200-linux-gcc  ./configure --prefix=$PREFIX --with-webkit-target=directfb  --disable-database --disable-xpath  --disable-xslt --build=i686-pc-linux-gnu --target=arm-linux --host=arm-hisiv200-linux CFLAGS=-I$PREFIX/include  CPPFLAGS=-I$PREFIX/include icu_config=$PREFIX





环境测试:

PKG_CONFIG
DIRECTFB_CFLAGS
DIRECTFB_LIBS

1) DirectFB-examples-1.2.0

CC=arm-hisiv200-linux-gcc ./configure  --build=i686-pc-linux --host=arm-hisiv200-linux  --prefix=/home/opt/yizhi/directfb/install


步骤1:
 把 DirectFB-1.3.0/ 目录下的 fb.modes 文件拷贝到 开发板的 etc 目录下。

步骤2:
 编写directfbrc
    简易的directfbrc文件如下:
    system=fbdev
    fbdev=/dev/fb2
    mode=240x320
    depth=16
    pixelformat=RGB16    




错误1:

# ./df_neo

   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.3.0 |~~~~~~~~~~~~~~~~~~~~~~~~~~
        (c) 2001-2008  The world wide DirectFB Open Source Community
        (c) 2000-2004  Convergence (integrated media) GmbH
      ----------------------------------------------------------------

(*) DirectFB/Core: Multi Application Core. (2011-03-20 07:40)
(!) DirectFB/core/system: No system found!
df_neo.c <217>:
        (#) DirectFBError [DirectFBCreate (&dfb)]: No (suitable) implementation found!


默认找 systerm 的路径打印为下面的,
direct_modules_explore_directory( '/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr//lib/directfb-1.3-0-pure/systems' )

其中 的(/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/ 是 configure 时的 prefix 设置安装路径)




错误2:

./pango-querymodules: /mnt/rootfs_full/usr/lib/libz.so.1: no version information available (required by /mnt/dfb/lib/libxml2.
so.2)


原来这是因为编译时使用的makefile中引用的动态链接库和实际运行时使用的动态链接库不同造成的。可以通过

ldd application_path/executable查看可执行文件的动态链接库,然后与makefile文件中的动态链接库对比不是一个链接库,
因此在$LD_LIBRARY_PATH中添加makefile中引用的动态链接库所在路径path加入到LD_LIBRARY_PATH中:export LD_LIBRARY_PATH=path:$LD_LIBRARY_PATH。
这样运行时就会首先查找path中的动态链接库从而找到正确的动态链接库,程序也恢复正常。



错误3:

Fontconfig error: Cannot load default config file
No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org


运行 fontconfig 的测试程序  lt-fc-list ,结果为

Fontconfig error: Cannot load default config file。

进行调试。

需要设置 FONTCONFIG_FILE 环境变量

export FONTCONFIG_FILE=/etc/fonts/fonts.conf


当没有正确显示字体,显示是方框,这里是由于编译时使用的是PC系统的字体库,当我移植时却没有了字体库,也就是那种后缀是ttf的文件,
所以要拷个字体库到开发板上。

查看/gtkdfb/etc/fonts下的fonts.conf,使字库和文件中描述的位置对应上。可以看到如下内容:
<!-- Font directory list -->
    <dir>/usr/share/fonts</dir>
    <dir>~/.fonts</dir>
/usr/share/fonts就是我们的字体库位置(pc的字库也在/usr/share/fonts路径下),从PC上拷字体库到开发板的该目录下(/usr/share/fonts)



所以拷贝 linux 系统下 /usr/share/fonts/truetype/freefont/ 路径下的字体库到开发板的 /usr/share/fonts 路径下。





错误4:


(gtk-demo:1276): Pango-WARNING **: No builtin or dynamically
loaded modules were found. Pango will not work correctly.
This probably means there was an error in the creation of:
  '/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr//etc/pango/pango.modules'
You should create this file by running pango-querymodules.

先把 modules 拷贝到开发板上,这些 modules 在 /opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/lib/pango 目录下。

使用 pango-querymodules 生成 modules 依赖配置文件
     pango-querymodules > pango.modules




错误5:

** (gtk-demo:1342): WARNING **: Cannot find demo data file "appwindow.c"

把 appwindow.c 文件拷贝到  /opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr//share/gtk-2.0/demo/appwindow.c 这里就能找到了。

这个路径  /opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/ 为安装路径。



错误6:


(gtk-demo:1558): Pango-WARNING **: Error loading GSUB table 85


错误7:

(webkittest:987): Pango-WARNING **: shape engine failure, expect ugly output. the offending font is 'FangSong_GB2312 Not-Rotated 9.9990234375'

找不到中文字体库。

你可能感兴趣的:(DFB GTK WEBKIT移植)