目录
一、文档简介:
本文档用于介绍Loongson 1B开发板上移植QT-3以及相关运行环境的搭建。
开发环境参数:
操作系统:Ubuntu 11.04
本机平台:X86
目标平台:Loongson 1B 开发板
交叉编译工具链:gcc-3.4.6-2f(1B交叉编译工具链)
所需软件及工具包:
QT源码包:qt-embedded-free-3.3.7.tar.gz
TSLIB源码包:tslib-1.4.tar.gz
二、移植过程
1.安装交叉编译工具链
首先安装Loongson 1B开发板提供的交叉编译工具链:
解压gcc-3.4.6-2f.tar.gz。PS.有些工具链对目录有一定的要求,请询问交叉编译工具链提供者,gcc-3.4.6-2f 需要放在/home/cpu/目录下面。
#tar zxvf gcc-3.4.6-2f.tar.gz
#mv gcc-3.4.6-2f /home/cpu/
将工具链加入到PATH环境变量中:
#export PATH=/home/cpu/gcc-3.4.6-2f/bin:$PATH
PS.每一次需要交叉编译均需要将交叉编译工具链加入到PATH变量,可通过修改/etc/profile文件来实现默认添加,即将上边最后一条语句加入到该文件中即可。
2.交叉编译TSLIB工具
解压tslib-1.4.tar.gz,进入文件夹交叉编译TSLIB工具,并指定工具安装目录为/TSLIB:
# tar zxvf tslib-1.4.tar.gz
# cd tslib-1.4
# ./autogen.sh
#./configure --host=mipsel-linux ac_cv_func_malloc_0_nonnull=yes
--prefix=/TSLIB
# make
# make install
编译完成后,TSLIB目录需包含以下文件目录:
# ls /TSLIB
bin etc include lib
各个目录分别为TSLIB的校准及测试程序、环境配置文件、头文件、动态库。
根据1B开发板触摸屏驱动类型,配置TSLIB,修改TSLIB的环境配置文件:修改/TSLIB/etc/ts.conf,将# module_raw input改成module_raw input,即去掉前面的注释符。PS.这里需要注意的是module_raw input前面不允许有空格。
3.交叉编译QT3
首先解压QT-3.3.7源码包并重命名后进入改目录以配置环境变量:
# tar zxvf qt-embedded-free-3.3.7.tar.gz
# mv qt-embedded-free-3.3.7/ qt-embedded-free-3.3.7-tslib-test
# cd qt-embedded-free-3.3.7-tslib-test/
# export QTDIR=$PWD
# export QTEDIR=$PWD
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# export PATH=$QTDIR/bin:$PATH
执行以上步骤即可配置好QT的编译环境变量。
接下来需要修改相关的QT编译参数:
# vim mkspecs/qws/linux-mips-g++/qmake.conf
确保文件中指定的交叉编译参数为gcc-3.4.6-2f 交叉编译工具链中对应gcc名称。主要修改以下标记为yellow的参数:
File:mkspecs/qws/linux-mips-g++/qmake.conf |
# # $Id: qt/qmake.conf 3.3.7 edited May 27 2003 $ # # qmake configuration for linux-g++ using the mipsel-linux-g++ crosscompiler # MAKEFILE_GENERATOR = UNIX TEMPLATE = app CONFIG += qt link_prl QMAKE_CC = mipsel-linux-gcc QMAKE_LEX = flex QMAKE_LEXFLAGS = QMAKE_YACC = yacc QMAKE_YACCFLAGS = -d QMAKE_CFLAGS = -pipe QMAKE_CFLAGS_WARN_ON = -Wall -W QMAKE_CFLAGS_WARN_OFF = QMAKE_CFLAGS_RELEASE = -O2 QMAKE_CFLAGS_DEBUG = -g QMAKE_CFLAGS_SHLIB = -fPIC QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses QMAKE_CFLAGS_THREAD = -D_REENTRANT QMAKE_CXX = mipsel-linux-g++ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DQWS -fno-exceptions -fno-rtti QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD QMAKE_INCDIR = QMAKE_LIBDIR = QMAKE_INCDIR_X11 = QMAKE_LIBDIR_X11 = QMAKE_INCDIR_QT = $(QTDIR)/include QMAKE_LIBDIR_QT = $(QTDIR)/lib QMAKE_INCDIR_OPENGL = /usr/X11R6/include QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib QMAKE_INCDIR_QTOPIA = $(QPEDIR)/include QMAKE_LIBDIR_QTOPIA = $(QPEDIR)/lib QMAKE_LINK = mipsel-linux-g++ QMAKE_LINK_SHLIB = mipsel-linux-g++ QMAKE_LFLAGS = QMAKE_LFLAGS_RELEASE = QMAKE_LFLAGS_DEBUG = QMAKE_LFLAGS_SHLIB = -shared QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB QMAKE_LFLAGS_SONAME = -Wl,-soname, QMAKE_LFLAGS_THREAD = QMAKE_RPATH = -Wl,-rpath, QMAKE_LIBS = QMAKE_LIBS_DYNLOAD = -ldl QMAKE_LIBS_X11 = QMAKE_LIBS_X11SM = QMAKE_LIBS_QT = -lqte QMAKE_LIBS_QT_THREAD = -lqte-mt QMAKE_LIBS_QT_OPENGL = -lqgl QMAKE_LIBS_QTOPIA = -lqtopia -lqpe QMAKE_LIBS_THREAD = -lpthread QMAKE_MOC = $(QTDIR)/bin/moc QMAKE_UIC = $(QTDIR)/bin/uic QMAKE_AR = ar cqs QMAKE_RANLIB = QMAKE_TAR = tar -cf QMAKE_GZIP = gzip -9f QMAKE_COPY = cp -f QMAKE_MOVE = mv -f QMAKE_DEL_FILE = rm -f QMAKE_DEL_DIR = rmdir QMAKE_CHK_DIR_EXISTS = test -d QMAKE_MKDIR = mkdir -p |
接下来需要为QT-3添加TSLIB触摸屏支持,对源码包进行部分修改:
首先修改 src/tools/qconfig-local.h 文件(不存在此文件可在该目录下创建一个同名空文件),添加触摸屏支持:
File:src/tools/qconfig-local.h |
#ifndef QT_H #endif #ifndef QT_DLL #define QT_DLL #endif #define QT_QWS_IPAQ #define QT_QWS_IPAQ_RAW #define QT_NO_QWS_CURSOR #define QT_NO_QWS_MOUSE_AUTO |
然后添加TSLIB补丁,增加QT-3