免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7124 | 回复: 11
打印 上一主题 下一主题

directfb + gtk 移植到arm平台 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-12 11:18 |只看该作者 |倒序浏览
最近在搭建dfb+gtk for arm

参考网路上各路高手的一些经验,基本上把所需要的库都交叉编译了,到最后交叉编译gtk+时遇到问题了

编辑了个configure脚本:

PREFIX=/opt/armhome \
CC=/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc \
PKG_CONFIG=/usr/bin/pkg-config \
BASE_DEPENDENCIES_CFLAGS="-I$PREFIX/include -I$PREFIX/lib/glib-2.0/include -I$PREFIX/include/glib-2.0 \
  -I$PREFIX/include/pango-1.0 -I$PREFIX/include/cairo -I$PREFIX/include/atk-1.0" \
BASE_DEPENDENCIES_LIBS="-L$PREFIX/lib $PREFIX/lib/libglib-2.0.so $PREFIX/lib/libgobject-2.0.so \
  $PREFIX/lib/libgmodule-2.0.so $PREFIX/lib/libfontconfig.so $PREFIX/lib/libxml2.so" \
GLIB_CFLAGS="-I$PREFIX/include -I$PREFIX/lib/glib-2.0/include -I$PREFIX/include/glib-2.0" \
GLIB_LIBS="-L$PREFIX/lib $PREFIX/lib/libglib-2.0.so $PREFIX/lib/libgobject-2.0.so \
  $PREFIX/lib/libgmodule-2.0.so $PREFIX/lib/libfontconfig.so $PREFIX/lib/libxml2.so" \
PANGO_CFLAGS="-I$PREFIX/include/pango-1.0" \
PANGO_LIBS="-L$PREFIX/lib $PREFIX/lib/libpango-1.0.so $PREFIX/lib/libpangoft2-1.0.so \
  $PREFIX/lib/libpangocairo-1.0.so" \
GDK_DEP_CFLAGS="-pthread -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include \
  -I$PREFIX/include/pango-1.0 -I$PREFIX/include/cairo -I$PREFIX/include -D_REENTRANT -D_GNU_SOURCE \
  -I$PREFIX/include -I$PREFIX/include/directfb" \
GDK_DEP_LIBS="-L$PREFIX/lib -ldirectfb -lfusion -ldirect -lpthread -ldl -lpng12 -lpangocairo-1.0 \
  -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -ljpeg -lm" \
GDK_PIXBUF_DEP_CFLAGS="-pthread -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include \
  -I$PREFIX/include -I$PREFIX/include" \
GDK_PIXBUF_DEP_LIBS="-L$PREFIX/lib -lgmodule-2.0 -ldl -lgobject-2.0 -lglib-2.0 -lpng12 -ljpeg -lm" \
GTK_DEP_CFLAGS="-pthread -I$PREFIX/include/glib-2.0 -I$PREFIX/lib/glib-2.0/include \
  -I$PREFIX/include/pango-1.0 -I$PREFIX/include/cairo -I$PREFIX/include -D_REENTRANT -D_GNU_SOURCE \
  -I$PREFIX/include/directfb -I$PREFIX/include/atk-1.0 -I$PREFIX/include" \
GTK_DEP_LIBS="-L$PREFIX/lib -lpng12 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lgobject-2.0 -lgmodule-2.0 \
  -ldl -lglib-2.0 -lcairo -ljpeg -lm" \
GDK_EXTRA_CFLAGS="-I$PREFIX/include" \
GDK_EXTRA_LIBS="-L$PREFIX/lib -ldirectfb -lz -lfusion -ldirect -lpthread -ldl" \
./configure \
--host=arm-linux \
--prefix=$PREFIX \
--with-gdktarget=directfb \
--without-libtiff \
--disable-glibtest \
--disable-largefile \
--disable-modules \
--with-included-loaders=jpeg,gif,png,xpm

运行报错

checking for DirectFB... configure: error:
*** DirectFB 0.9.24 or newer and the cairo backend
*** are required. The latest version of DirectFB is always available
*** from http://www.directfb.org/.

于是检查config.log
发现问题 configure:33857: error:
回头看configure文件,导致出错的原因在于这一行

  if $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb && $PKG_CONFIG --exists cairo-directfb ; then
....

在终端检测了一下,directfb.pc 是没有问题的,返回成功,但是 cairo-direcfb.pc 就检测失败了

打印错误信息:
root@ubuntu:/home//gtk+-2.10.14# pkg-config --exists cairo-directfb --print-errors
Package /opt/armhome/lib/pkgconfig was not found in the pkg-config search path.
Perhaps you should add the directory containing `/opt/armhome/lib/pkgconfig.pc'
to the PKG_CONFIG_PATH environment variable
Package '/opt/armhome/lib/pkgconfig', required by 'cairo', not found


于是看了下cairo-direcfb.pc 和 cairo.pc这两个文件

发现cairo-directfb 需要cairo

而cairo.pc中出现了很奇怪的一个依赖


prefix=/opt/armhome
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: cairo
Description: Multi-platform 2D graphics library
Version: 1.4.10

Requires.private: freetype2 >= 8.0.2 fontconfig directfb /opt/armhome/lib/pkgconfig
Libs: -L${libdir} -lcairo
Libs.private: -lz -lm
Cflags: -I${includedir}/cairo


问题就处在这里了,需要/opt/armhome/lib/pkgconfig.pc文件,我也不知道这个东西是什么,卡在这里了,把这个依赖直接去掉的话,会出现

/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/lib/gcc/arm-unknown-linux-gnu/4.0.1/../../../../arm-unknown-linux-gnu/bin/ld: warning: libpangoft2-1.0.so.0, needed by /opt/armhome/lib/libpangocairo-1.0.so, not found (try using -rpath or -rpath-link)
/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/lib/gcc/arm-unknown-linux-gnu/4.0.1/../../../../arm-unknown-linux-gnu/bin/ld: warning: libfreetype.so.6, needed by /opt/armhome/lib/libpangocairo-1.0.so, not found (try using -rpath or -rpath-link)
/opt/crosstool/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/lib/gcc/arm-unknown-linux-gnu/4.0.1/../../../../arm-unknown-linux-gnu/bin/ld: warning: libz.so.1, needed by /opt/armhome/lib/libcairo.so, not found (try using -rpath or -rpath-link)
/opt/armhome/lib/libcairo.so: undefined reference to `FcPatternAddInteger'
/opt/armhome/lib/libcairo.so: undefined reference to `deflate'
/opt/armhome/lib/libcairo.so: undefined reference to `FT_Get_PS_Font_Info'

看来还是cairo库有问题,但是真的找不到问题出在那里啊!求助大侠帮忙分析

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-11-12 11:24 |只看该作者
看来是没有找到FreeType和FontConfig

论坛徽章:
0
3 [报告]
发表于 2009-11-12 11:28 |只看该作者
不是说缺少pkgconfig.pc
pkgconfig是目录,如果是desktop的话一般在/usr/lib/pkgconfig目录下,下面是各种软件包的.pc文件。你应该是freetype2.pc,fontconfig.pc等有问题

论坛徽章:
0
4 [报告]
发表于 2009-11-12 15:17 |只看该作者
我现在觉得以前编译的库有问题,又得从头来了,有一个疑问
从glib开始
在编译这个库之前,我设置了环境变量
export PREFIX=/opt/armhome
export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
export COMPILER=arm-linux-gcc
export HOST=arm-linux


建立文件 arm-linux.cache
配置内容如下:
glib_cv_stack_grows=no
glib_cv_uscore=no
ac_cv_func_posix_getpwuid_r=no
ac_cv_func_posix_getgrgid_r=no

CC=$COMPILER ./configure --host=arm-linux --prefix=/opt/armhome --cache-file=arm-linux.cache



报错如下:
/usr/bin/pkg-config: error while loading shared libraries: /opt/armhome/lib/libglib-2.0.so.0: ELF file OS ABI invalid
configure: error: *** pkg-config too old; version 0.16 or better required.

实际上系统上的pkg-config版本是0.22的
如果我unset  LD_LIBRARY_PATH
就可以编译通过
我觉得是不是一开始就错了呢,pkg-config需要交叉编译成arm版本的呢, 还是用系统安装的呢?

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
5 [报告]
发表于 2009-11-12 16:20 |只看该作者
交叉

论坛徽章:
0
6 [报告]
发表于 2009-11-13 09:54 |只看该作者
好像看过一个帖子,说是pkg-config不可以交叉编译到arm上哦,呵呵

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
7 [报告]
发表于 2009-11-13 10:07 |只看该作者
谁说的?

论坛徽章:
0
8 [报告]
发表于 2009-11-13 15:30 |只看该作者
忘记谁说的了

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
9 [报告]
发表于 2009-11-13 16:08 |只看该作者
那就等于没有
嵌入式和pc没有什么区别的
尤其是应用程序

论坛徽章:
0
10 [报告]
发表于 2009-11-16 09:13 |只看该作者
自己编译了下pkg-config,是i386的,不是arm的,指定PKG_CONFIG ,交叉编译好象没什么影响啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP