在scratchbox 环境下交叉编译GTK

最近因为工作原因开发GTK等一系列的图形库,网上虽然有好多的开发gtk的文章,但是介绍在scratchbox上开发GTK的比较少,所以自己整理了一下开发过程,希望可以与别人分享。连两千多年前的孟子都说“独乐乐,不如众乐乐”,(读音读 dú yuè lè, bù rú zhòng yuè lè)。好了,废话少说,以下是我开发用到的版本。

scratch
scratchbox-core-1.0.10-i386.tar.gz
scratchbox-devkit-cputransp-1.0.7-i386.tar.gz
scratchbox-libs-1.0.10-i386.tar.gz
scratchbox-toolchain-arm-gcc3.4-uclibc0.9.28-1.0.4-i386.tar.gz
你可以到这里下载相应的开发工具包。
GTK 一系列的库和工具的版本,他们编译的顺序可参考vicegod的blog。有人会问了,为什么你的比vicegod文章里提到的库少呢,这是因为,我已经交叉编译出来了 Xserver了,我把它放在了我的scratchbox 建立的工程的/usr/X11R6下。缺少的库,包含在Xserer路径下的lib目录下。他们是fontconfig-2.1.0 ,freetype-6.3.6(啊!我也知道这很奇怪,到freetype的官方网站上去,最高版本也不过2.3.7,我的的确是Xserver-4.5.0编译出来的。可能是此freetype,非彼freetype吧。等以后有时间再慢慢研究。)
jpeg-6b
libpng-1.2.32
tiff-v3.4
zlib-1.2.3

libiconv-1.12
gettext-0.16
glib-2.4.0
atk-1.0.1
pango-1.4.0
gtk+-2.4.0

好了,前期的描述工作已经完成了,接下来就进入正题了。因为使用scratchbox,只有建立好工程,就可以像在为本机上编译程序一样,开始编译了。关于如何建立开发环境等可以参考scratchbox的官方网站的文档。
但是在编译过程中会遇到明明已经编译成功了,并且已经安装成功了编译所依赖的库,怎么configure 还是报错呢。要回答这个问题,看了这篇文章,应该对我们有所启示,而另一篇文章,则对我们调试configure的错误有所帮助。
所以在出现上述问题时,首先检查$PATH等环境变量,然后是/etc/ld.so.conf,接着可以尝试着把依赖库的pc文件所在目录增加到环境变量$PKG_CONFIG_PATH路径中。

所有的开发库编译都要经历 configure &make &make install 三个过程。只不过在configure 的时候会不同吧了!
以下是我在编译时的configure时的选项。

zlib-1.2.3
CC=arm-linux-gcc ./configure --shared  --includedir=/usr/local/include/
tiff-v3.4
CC=arm-linux-gcc ./configure --target=arm-linux
jpegsrc.v6b
CC=arm-linux-gcc ./configure --prefix=/usr/local --enable-shared --enable-static --target=arm-linux --host=arm-linux
libpng-1.2.32
CC=arm-linux-gcc ./configure --prefix=/usr/local --enable-shared --enable-static --target=arm-linux --host=arm-linux

libiconv-1.12
./configure --host=arm-linux --prefix=/usr/local
gettext-0.16
./configure --host=arm-linux --prefix=/usr/local
glib-2.4.0
./configure --host=arm-linux --cache-file=arm-linux.cache
这个比较特殊,因为编译的时候会发生以下错误
checking for growing stack pointer... configure: error: cannot run test program while cross compiling
解决办法见absurd的交叉编译场景分析之编译Glib
在编译glib(应该说是configure阶段)时还有如下错误:
checking for glib-genmarshal... no
configure: error: Could not find a glib-genmarshal in your PATH
后来查找是因为缺少命令glib-genmarshal,由于我的交叉编译环境是scratch box 所以将本机的glib-genmarshal拷贝到相应的搜索路径下就可以configure过了。不过在编译的时候还是会报错,找不到 glib-genmarshal 所在的路径,因为我们使用的是X86平台的程序。出现这个错误时,我们已经有了在 gobject 目录下有了glib-genmarshal文件了,将它拷贝到相应的搜索路径下,就可以工作了。
atk-1.0.1
./configure --host=arm-linux --prefix=/usr/local
pango-1.4.0
./configure --host=arm-linux --x-includes=/usr/X11R6/include/ --x-libraries=/usr/X11R6/lib/
gtk+-2.4.0
./configure --host=arm-linux --x-includes=/usr/X11R6/include/ --x-libraries=/usr/X11R6/lib/
当然现在在编译gtk的时候(编译阶段,就是make阶段)也出现了问题,
failed to load "./stock_add_16.png": Couldn't recognize the image file format for file './stock_add_16.png'
这个问题后来,我只是把/usr/loca/lib/pkgconfig 下的关于png的pc文件copy到/usr/lib/pkgconfig 下,然后再重新编译就过了。
可以正是一波未平,一波又起。
gtk+-2.4.0/gtk/.libs/lt-gtk-query-immodules-2.0: can't load library 'libgtk-x11-2.0.so.0'
这个错误原因是因为没有把动态库的路径加到/etc/ld.so.conf下,这样我只能手动的将相应的库copy到/etc/ld.so.conf所指定的路径上去。记得在编译GTK其它库的时候也遇到类似的情况,也都是采用相同的处理办法。
最后终于交叉编译GTK成功了!

http://blog.csdn.net/jiayinjia1983116/article/details/3095262
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交叉编译libx加GTK+2.1时候用到库各个库文件的集合,不用花费时间网上一个一个下载,已经经过本人亲测试实测,还可以编译GTK+directFB 1.1 libs_for_gtk Dir: atk-1.25.2.tar.gz atk-1.26.0.tar.gz bigreqsproto-1.1.2.tar.bz2 cairo-1.8.6.tar.gz CPAN-1.94.tar.gz DirectFB-1.1.1.tar.gz expat-2.0.1.tar.gz expat-2.1.0.tar.gz ExtUtils-MakeMaker-6.20.tar.gz fontconfig-2.4.2.tar.gz fontconfig-2.6.0.tar.gz fontconfig-2.7.3.tar.gz freetype-2.3.5.tar.bz2 freetype-doc-2.3.6.tar.bz2 glib-2.12.1.tar.bz2 glib-2.14.4.tar.gz glib-2.18.2.tar.bz2 glibc-2.2.5.tar.bz2 gtk+-2.10.14.tar.bz2 gtk+-2.10.7.tar.bz2 gtk+-2.12.12.tar.bz2 inputproto-2.2.tar.bz2 jpegsrc.v6b.rar jpegsrc.v6b.tar.gz kbproto-1.0.6.tar.bz2 libpng-1.2.10.tar.bz2 libpng-1.2.32.tar.lzma libpthread-stubs_0.1.orig.tar.gz libtool-1.5.22.tar.gz libtool-2.4.2.tar.xz libX11-1.0.3.tar.bz2 libX11-1.2.2.tar.bz2 libX11-1.3.2.tar.gz libX11-1.5.0.tar.bz2 libXau-1.0.7.tar.bz2 libXau-1.0.8.tar.bz2 libxcb-1.3.tar.bz2 libxcb-1.4.tar.bz2 libxcb-1.8.1.tar.bz2 libXdmcp-1.0.3.tar.gz libXdmcp-1.1.2.tar.bz2 libXext-1.0.1.tar.bz2 libXfont-1.4.4.tar.bz2 libXft-2.1.12.tar.bz2 libXft-2.1.13.tar.bz2 libxml2-2.6.30.tar.gz libxml2-2.6.32.tar.gz libxslt-1.1.29.tar.gz libXt-1.0.6.tar.bz2 pango-1.16.4.tar.bz2 pango-1.18.2.tar.gz pango-1.22.1.tar.bz2 pango-1.24.4.tar.bz2 pixman-0.24.0.tar.bz2 poky-pinky-3.1.1.tgz stubs-soft.h tiff-3.8.2.tar.gz tiff-4.0.7.tar.gz tslib-1.4.tar.gz xcb-proto-1.7.1.tar.bz2 xcmiscproto-1.1.2.tar.bz2 xcmiscproto-1.2.2.tar.bz2 xextproto-7.2.1.tar.bz2 xorg-server-1.3.0.0.tar.bz2 xorg-server-1.4.2.tar.bz2 xproto-7.0.23.tar.bz2 xtrans-1.2.7.tar.bz2 zlib-1.2.3.rar zlib-1.2.3.tar.gz zlib-1.2.5.tar.gz

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值