Fedora下 DirectFB 开发手记(三) 编译测试 GTK+

 1、安装Fedora Live 13,

修改root用户登录,

修改selinux,

修改 /boot/grub/menu.lst 增加 vga=788 参数 保证 framebuffer 的正常

2、升级基本的开发环境

说明:这个是经过试验最精简的可编译GTK+的环境了,这样有利于我们对依赖环境,及最小根文件系统进行分析

3、导入必要的环境变量

我一般用 root 用户登录,所以我修改了root用户的配置文件 vi /root/.bash_profile 增加如下环境变量

说明:

PATH 环境变量需要增加交叉编译目录的 bin 目录 因为后续编译会用到里面的命令

C_INCLUDE_PATH 的增加 是因为 在编译过程中有可能碰到 libjpeg.h 无法找到的问题

PKG_CONFIG_PATH 编译过程中 会去寻找相应的哭

LDFLAGS 和 CFLAGS 分别在编译和链接时会用到

LD_LIBRARY_PATH ./config 时会用到

  

4、建立独立的跟文件系统,便于以后进行交叉编译

后两个 man 目录是下面编译 jpeg 库时 make install 需要用到的,提前先建立好

5、下载编译 GTK 需要用到各个库(完全独立的编译,不依赖于系统环境),具体下载地址如下

一共 14个库,(这里除了 directFB 我必须使用特定版本外,其他我都使用目前最新的库2010.06.12)

按照依赖顺序排列如下:

  

下载地址如下:(均为官方下载地址,如果以后版本有更新,可根据URL地址分析后取得最新的代码下载地址)

http://zlib.net/zlib-1.2.5.tar.gz
http://downloads.sourceforge.net/project/libpng/01-libpng-master/1.4.2/libpng-1.4.2.tar.gz?use_mirror=nchc
http://www.ijg.org/files/jpegsrc.v6b.tar.gz

http://nchc.dl.sourceforge.net/project/freetype/freetype2/2.3.12/freetype-2.3.12.tar.gz 

http://www.directfb.org/downloads/Core/DirectFB-1.2.8.tar.gz

http://www.directfb.org/downloads/Extras/DirectFB-examples-1.2.0.tar.gz 

http://ftp.gnome.org/pub/gnome/sources/glib/2.24/glib-2.24.0.tar.gz

http://ftp.gnome.org/pub/gnome/sources/atk/1.30/atk-1.30.0.tar.gz

ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz

http://fontconfig.org/release/fontconfig-2.8.0.tar.gz

http://cairographics.org/releases/pixman-0.18.2.tar.gz

http://cairographics.org/releases/cairo-1.8.10.tar.gz

http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.0.tar.gz

!!!http://ftp.gnome.org/pub/gnome/sources/gtk+/2.20/gtk+-2.20.1.tar.gz 不要用了

ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-2.10.14.tar.gz

解压缩所有的 tar.gz 文件

6、编译指导及遇到的问题

1)如果发现某些库或者头文件找不到,请参考最开始的环境变量设置,并且每个相应的模块编译完之后请 make install

2)对于jpeg库的编译,不但要 make install 而且要 make install-lib 否则会引起无法找到 jpeg 相关的头文件

3)编译DirectFb 遇到了 png_info 没有名为 trans_values 的成员,这是由于使用的 libpng 1.4 代码进行编译,而这个版本结构中的成员有调整,解决办法参考:

碰到问题:png_info 没有名为 trans_values的成员
http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2010-March/185101.html

DirectFB-1.2.8/interfaces/IdirectFBImageProvider_png.c

 

639行 修改 trans 为 trans_alpha

664行 修改 trans_values 为 trans_color

675行 修改 trans 为 trans_alpha

4)在使用最新的gtk+之前,我还试着编译过gtk+-2.10.14 遇到 G_GNUC_FUNCTION相关的报错,解决办法为

vimrc:
Cool, just use:
G_STRLOC instead of the G_GNUC_FUNCTION

sth like this:
Code:

WARN_UNIMPLEMENTED (G_STRLOC);

参考:http://boards.dingoonity.org/dingux-development/compiling-gtk2-over-directfb-(wip)/5/?wap2

gtk+-2.10.14 的修改可以如下进行

cd gtk+-2.10.14/gdk/directfb
find . -name "*.c" -print0 | xargs -0 sed -i 's/G_GNUC_FUNCTION/G_STRLOC/g'


5)以上代码,一定要在linux 系统下编译,不要在 window 的共享目录编译,切记切记,否则当使用这些库德时候有可能出现:

elf file os abi invalid

6)pixman 这个库 是最新的环境才需要用到,其他一些编译过程没有相应的说明

7)完整编译过程可先参考:

http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB_for_Embedded_Systems

 7、开始编译喽

ATK 的 编译

LIBXML 的编译

FONTCONFIG 的编译

pixman 的编译 跟 1-7 的编译一样

CAIRO 的编译(这里要注意,参数跟指导文件的不大一样)

这里./configure 不能带上 --disable-pdf --disable-ps --disable-svg 这3个参数

否则这个版本呢的 GTK+ 无法编译通过

编译 PANGO

GTK+的编译

 这里跟指导文件有差异 不能带上 --disable-modules

否则会导致 failed to load apple-red.png

大功告成,去测试一下编译出来的 gtk+吧

cd /myroot/bin

./gtk-demo

本文中用到的代码,全部采用automake 的方法

所以在./configure 的过程中 可以很容易的更改成 交叉编译环境

希望大家也能编出属于自己环境 的 GTK+

不过。。。。经过验证。。。很可惜,2.20.1 版本的 GTK+ 会 CORE DUMP

我要重新编译 gtk+-2.10.14 这个版本的 一切顺利

半自动化脚本,directfb 的修改 以及前面的准备工作请手工进行

 

发布了36 篇原创文章 · 获赞 33 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/turui/article/details/5667168