路径:
/work/GUI/qtopia/qtopia-free-2.2.0
qtopia是在qt/embedded的基础上开发的一个应用环境,相当于qt/embedded的集成开发环境
1.前期准备:
①编译、安装jpeg库
源码为/work/GUI/qtopia/deps/jpegsrc.v6b.tar.gz,解开后得到目录jpeg-6b。
先使用以下命令进行配置:
$ ./configure --enable-shared --enable-static \
--prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux\
--build=i386 --host=arm
然后修改生成的Makefile,如下:
CC= gcc 改为:CC= arm-linux-gcc
AR= ar rc 改为:AR= arm-linux-ar rc
AR2= ranlib 改为:AR2= arm-linux-ranlib
最后是编译和安装,执行如下命令:
$ make
$ make install-lib
这将在/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux中的include目录中生成一些头文件,
在lib 目录中生成一些jpeg库文件。
②编译、安装uuid库
源码为/wok/GUI/qtopia/deps目录下的e2fsprogs-1.40.2.tar.gz。
解压缩后参照它的INSTALL文件即可编译。对于交叉编译,在执行“../configure”时
需要指定交叉编译工具链和目标板。执行的命令如下:
$ tar xzf e2fsprogs-1.40.2.tar.gz
$ cd e2fsprogs-1.40.2/
$ mkdir build; cd build
$ ../configure --with-cc=arm-linux-gcc--with-linker=arm-linux-ld --enable-elf-shlibs
--host=arm-prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
$ make
$ make install-libs
最后一条命令在/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/下的include、lib目录中安装
一些头文件和库,比如uuid/uuid.h、libuuid.a、libuuid.so等
③编译、安装zlib库
源码为/wok/GUI/qtopia/deps目录下的zlib-1.2.3.tar.gz。解压之后使用以下命令进行配
置:
./configure --shared--prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
然后修改生成的Makefile,以下是修改后的结果,都加上了“arm-linux-”前缀:
CC=arm-linux-gcc
……
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1
……
CPP=arm-linux-gcc -E
……
AR=arm-linux-ar rc
……
RANLIB=arm-linux-ranlib
最后执行以下命令编译、安装:
$ make
$ make install
④编译、安装png库
源码为/wok//GUI/qtopia/deps目录下的libpng-1.2.23.tar.bz2。
解压后进入它的目录,复制Makefile:
$ cp scripts/makefile.linux ./Makefile
修改Makefile,以下是修改后的结果,都加上了“arm-linux-”前缀:
AR_RC=arm-linux-ar rc
CC=arm-linux-gcc
……
RANLIB=arm-linux-ranlib
……
prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
最后执行以下命令编译、安装:
$ make
$ make install
⑤编译、安装触摸屏ts库
源码为/wok/GUI/qtopia/deps目录下的tslib-1.3.tar.bz2。
解压后进入它的目录,执行以下命令:
$ ./autogen.sh
$ echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
$ ./configure --host=arm-linux--cache-file=arm-linux.cache --enable-inputapi=no
--prefix=/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux
在make 之前,为了支持触摸屏修改src/ts_read_raw.c文件,如下修改代码:
char *defaulttseventtype="UCB1x00";
改为:
char *defaulttseventtype="H3600";
为了防止出现“libtool:link: onlyabsolute run-paths are allowed“的错误,在
plugins/Makefile 里面找rpath,找到将其注释并加上绝对路径:
#LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR)&& pwd`
最后执行以下命令编译安装:
$ make
$ make install
⑥得到本机运行版本uic 工具下载地址:
http://vanille.de/tools/uic-qt2
改变权限:
chmod u+rx uic-qt2
改名:
mv uic-qt2 uic
拷贝到qtopia-free-2.2.0/qt/bin中
cp uic /home/nfs/qtopia-free-2.2.0/qt2/bin中
⑥. 安装或升级 freetype 到 2.1.10 版本
1. 下载 freetype 源代码压缩包
下载地址:
http://prdownloads.sourceforge.net/freetype/freetype-2.1.10.tar.bz2
把下载回来的压缩包解压。
2. 打开 freetype 的 hinting 内嵌属性
用文本编辑器打开以下文件:
freetype-2.1.10/include/freetype/config/ftoption.h
把439行的注释符号(/* ...... */)去掉,改成如下这样:
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
保存并退出文本编辑器。
3. 编译安装
进入 freetype-2.1.10 文件夹,并以 root 身份在终端命令行运行:
#cd freetype-2.1.10 (这一步是进入 freetype-2.1.10 文件夹的操作)
#./configure --prefix=/usr
#make
#make install
⑦. 安装或升级 fontconfig 到 2.3.2 版本
1. 下载源代码压缩包
下载地址:
http://www.fontconfig.org/release/
2. 编译安装
进入 fontconfig-2.3.2 文件夹,并以 root 身份在终端命令行运行:
#cd fontconfig-2.3.2 (这一步是进入 fontconfig-2.3.2 文件夹的操作)
#./configure --disable-docs --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man
#make
#make install
⑧. 安装或升级 libXft 到 2.1.7 版本
1. 下载源代码压缩包
下载地址:
http://xlibs.freedesktop.org/release/?C=N;O=D
2. 编译安装
进入 libXft-2.1.7 文件夹,并以 root 身份在终端命令行运行:
#cd libXft-2.1.7 (这一步是进入 libXft-2.1.7 文件夹的操作)
#./configure --prefix=/usr/X11R6
#make
#make install
2.设置环境变量,运行./setQteEnv即可
export QPEDIR=/work/GUI/qtopia/qtopia-free-2.2.0/qtopia
export QTDIR=/work/GUI/qtopia/qtopia-free-2.2.0/qt2
export TMAKEDIR=/work/GUI/qtopia/qtopia-free-2.2.0/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
3.修改相关文件
1). qtopia-free-2.2.0/qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
将此行
QMAKE_LIBS_QT = -lqte
修改为
QMAKE_LIBS_QT = -lqte -lpng -lz -luuid -ljpeg
2).修改$QPEDIR/src/qt/qconfig-qpe.h文件,定义相应的宏,在最后加上
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
这样是为了让Qtopia自动支持触摸屏
3.修改qtopia-free-2.2.0/qt2/include/qvaluestack.h
将remove( this->fromLast() );改为this->remove( this->fromLast() );
4.qtopia-free-2.2.0/qtopia/src/3rdparty/plugins/codecs/libflash/
将其中的jpeglib.h改名为jpeglib.h.bak
5.qtopia-free-2.2.0/qtopia/src/libraries/qtopia/qdawg.cpp
4.编译
打补丁
》patch <../qtopia-free-2.2.0_jz2440.patch
>mkdir /opt/qt-2.2.0
>./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 16,24 -system-jpeg -system-libpng -system-zlib -gif -thread -no-xft -release -lpng -lz -luuid -ljpeg" -qpe '-xplatform linux-arm-g++ -edition pda -displaysize 320x240 -prefix=/opt/qt-2.2.0'
./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 16,24 -system-jpeg -system-libpng -system-zlib -gif -thread -no-xft -release -lpng -lz -luuid -ljpeg" -qpe '-xplatform linux-arm-g++ -edition pda -displaysize 480x272 -prefix=/opt/qt-2.2.0'
注:如果make install 不成功,改成root安装
》sudo passwd root 重设root用户密码