您的位置:首页 > 其它

DFB GTK WEBKIT移植

2014-04-02 23:50 183 查看

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'

找不到中文字体库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: