Building GPE Phone Edition using Scratchbox
Setting up Scratchbox
资源说明:
/scratchbox/source/gpephone
该目录的tarball为gpephone官方组织的发布版本。
/scratchbox/source/gpephone.sh
/scratchbox/source/gpephone-sys.sh
这两个脚本是用来自动编译gpephone版本,两者的区别是gpephone-sys.sh会把所有配置文件安装到/etc下面,gpephone.sh 会把所有的配置文件安装到指定目录的etc下面。
/scratchbox/source/filesystem.sh
参照此文件编译制作根文件系统,以及编译安装过程中遇到的问题/解决方法。
GettingStarted
mhf@mhf-desktop:/scratchbox$ sudo ./sbin/sbox_ctl start
mhf@mhf-desktop:/scratchbox$ ./login
[sbox-s3c2410-usr: ~] > sb-menu
创建或者选择目标系统
[sbox-s3c2410-usr: ~] > cd /scratchbox/source
安装gephone到/usr目录,也可以安装到其他目录,如:/usr/gpephone
[sbox-s3c2410-usr: /scratchbox/source] > ./gpephone.sh /usr/gpephone
如果对gpephone代码进行过一次完整的编译,现在只为了生成文件系统,那么我们只需要执行
[sbox-s3c2410-usr: /scratchbox/source] > ./gpephone.sh /usr/gpephone install
如果使用的为crosstool-0.43自动生成的工具链:arm-linux-gcc-3.4.4-glibc-2.3.5,,它还存在几个问题,需要进行修正(在scratchbox中进行):
rm -rf /usr/lib/libstdc++.*
rm -rf /usr/lib/libgcc_s.so
cp /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib/libstdc++.* /usr/lib -rf
cp /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib/libgcc_s.* /usr/lib -rf
rm /usr/lib/libgcc_s.dir/ -rf
rm /usr/lib/libstdc++.dir/ -rf
在编译lips_im包的时候还会有一个与工具链相关的问题。
freetype的版本不能太高如果为2.3.5那么在编译xorg的时候出现
libXfont.so: undefined reference to `ft_isdigit'
要uminstal libXfont 和freetype 重新对这两个包进行安装
Glib
Glib-2.9.1 加入slice支持
但是2.9.1是一个不稳定的开发版本,还存在很多bugs,所以在产品中建议不使用该版本。
Glib 2.10 兼容 Glib 2.8.x ,但是在2.9.1版本中所新添加的一些API在此版本中还没有完善,所以这个版本可能与最终的2.10 的release版本不兼容。
Gtk+
Gtk+-2.6
比较稳定的组合:
1> Atk-1.9.0 Glib-2.6.6 Gtk-2.6.10 Pango-1.8.2
2> Atk-1.9.0 Glib-2.8.6 Gtk-2.6.10 Pango-1.8.2
Gtk+-2.7,Gtk+-2.8
这两个版本较少使用。
Gtk+-2.10
glib-2.8.6 gtk+-2.6.10 是一组比较好的组合,
Gtk+-2.8.0 依赖:
glib-2.0 >= 2.7.1 atk >= 1.0.1 pango >= 1.9.0 cairo >= 0.9.2
Gtk+-2.7.0 依赖:
glib-2.0 >= 2.7.0 atk >= 1.0.1 pango >= 1.9.0)
pango-1.9.0以上需要cairo支持。
glib-2.8.6是v2.8中的最高版本,如果要使用glib的slice功能那么必须用v2.9.1以上版本,使用glib-2.10.0/2 用gtk+-2.6.10编译的时候出错,只能gtk换成大于gtk+-2.7.0,但是gtk+-2.7版本以上的时候就需要pango>=1.9.0 而pango这个版本以上又需要cairo支持,所以暂时还没有比较适合的组合:既要支持glib的slice功能又要不使用cairo。
gtk+-2.10.0以上版本
Package requirements (glib-2.0 >= 2.12.0 atk >= 1.9.0 pango >= 1.12.0 cairo >= 1.2.0)
编译lips_im-0.1时候出错的解决方法
mkdir -p /opt/crosstool/gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/
ln
-sv
/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu
/opt/crosstool/gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu
mkdir -p /opt/workspace/toolchains/gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/
ln
-sv
/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu /opt/workspace/toolchains/gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu
mkdir /opt/workspace/toolchains/gcc-3.4.4-glibc-2.3.5/arm-9tdmi-linux-gnu
ln
-sv
/scratchbox/compilers/arm-9tdmi-linux-gcc-3.4.4-glibc-2.3.5/arm-9tdmi-linux-gnu
/opt/workspace/toolchains/gcc-3.4.4-glibc-2.3.5/arm-9tdmi-linux-gnu/
1>libgemwidget
地址:
目前使用的是1.0版本,他必须有gnome一些特性的支持
必须按顺序安装:libIDL ORBit2 libbonobo bzip2 gnome-mime-data gnome-vfs这些依赖包
libIDL
ORBit2
libbonobo
Libbonobo Reference Manual:http://library.gnome.org/devel/libbonobo/stable/index.htmllibbonobo libbonoboui 是GNOME 的基础库
libbonobo 是 Gnome 的 CORBA 框架。用来建立可重复使用的部件。
libbonoboui 需要 libbonobo 作为基础。
不能用太高版本,否则需要高版本的glib
当前使用的版本:(04-Jul-2005 16:08 1.4M)
bzip2
gnome-mime-data
gnome-vfs
gnome-vfs-2.20需要glib 2.9版本以
当前使用版本:gnome-vfs-2.8.0
Email
email依赖下面几个库:
Gtk+-2.0 libgemwidget libgpephone Tinymail
Tinymail
根据手册:
Email client application depends on patched tinymail. The patch is based on tinymail revision 1112,所以通过svn取出1112这个版本:
cd /scratchbox/source/gpephone
svn co --revision=1112
cd tinymail
cp /home/mhf/Desktop/source/gpephone/trunk/source/patches/tinymail.path ./
patch -p1 mv trunk tinymail-1112
tar -xvf tinymail-112.tar.bz2 tinymail-112/
configure 的时候加上 --with-platform=simple 选项--with-platform=gpe的选项编译不过。
在gmem.h 文件中加上
#ifndef g_slice_new
#define g_slice_new(type) g_malloc(sizeof(type))
#define g_slice_new0(type) g_malloc0(sizeof(type))
#define g_slice_free(type,obj) g_free(obj)
#endif /* !g_slice_new */
把tinymail1112版本中的文件:e-trie.c ,e-sexp.c,camel-folder-thread.c的函数 g_slice_free_chain 用e_memchunk_destroy替代。
中有:
void
e_trie_free (ETrie *trie)
{
g_ptr_array_free (trie->fail_states, TRUE);
e_memchunk_destroy (trie->match_chunks);
e_memchunk_destroy (trie->state_chunks);
g_free (trie);
}
gnome-vfs
gnome-vfs-2.20需要glib 2.9版本以上
gpe-phonepanel的时候找不到 -I/usr/gpephone/include/gpe
ptim包括四个包,release版本有问题,用svn版本
gtk
编译gtk的时候出现找不到 jpeglib.h
如果jpeg-6b编译到/usr目录,那么就会找到,所以拷贝jpeg的几个头文件由/usr/gpephone/include/j*.h 到 /usr/include/
libpng
图形编码解码程序库,支持对 PNG 图形文件的创建、读写等操作。libpng 使用 zlib 程序库作为压缩引擎,zlib 也是著名的 gzip (GNU zip) 所采用的压缩引擎。
下载地址:
configure: error: ZLib not installed
设置一下环境变量CFLAGS和LDFLAGS
export LDFLAGS=-L$PREFIX/usr/local/lib
export CFLAGS=-I$PREFIX/usr/local/include
libid3tag
configure的时候出现..
checking zlib.h presence... no
configure: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!
它跟libpng一样也需要zlib的支持,但是安装了zlib并且/usr/gpephone/include/下存在zlib.h文件的情况下还是会出现checking zlib.h presence... no的提示。
通过:cp /usr/gpephone/include/zlib.h /usr/include -rf 可以解决该问题。
matchbox-window-manager
由0.95升级到了1.2会出现一下错误:
matchbox-window-manager: error while loading shared libraries: libpng12.so.0
/etc/pango 下面有
pango.modules pango.aliases pangorc
文件,但是nokia770 和 a780下面都没有
为什么要在firstrun.sh 文件中对这些模块进行注册?
pango-querymodules > /etc/pango/pango.modules
gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders1
gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules1
而在现有的文件系统中,在没有执行上面的命令之前相应的文件已经存在,这些文件什么时候生成的?
阅读(1536) | 评论(1) | 转发(0) |