QT-Embedded-4.6.3移植到MIPSEL开发板
需要准备的资源 交叉编译工具链:君正公司提供的交叉编译工具链mipseltools-gcc412-glibc261
下载地址:ftp://ftp.ingenic.cn/3sw/01linux/00toolchain/mipseltools-gcc412-glibc261.tar.bz2
如果无法运行可以下载源码自己编译,君正公司已经配置好了,安装很容易的,直接configure,然后make就好了 下载地址:ftp://ftp.ingenic.cn/3sw/01linux/00toolchain/jz-crosstools-src.tar.bz2
PS:系统的GCC版本最好换成和工具链一样的版本,不然后面编译QT时可能出现未知的错误
QT源代码包,需要两个版本:
1: Qt SDK for Linux/X11 32-bit 下载地址:http://get.qt.nokia.com/qtsdk/qt-sdk-linux-x86-opensource-2010.03.bin 这个是官方提供的二进制安装包,用来产生Qt Creator,Qt designer等一系列工具。
2: QT Embedded for linux 下载地址:http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz 嵌入式版本的QT;
安装:
1:先安装PC版本的QT 这个没什么好说的,进入放置Qt SDK的文件夹内,直接在终端输入 "./qt-sdk-linux-x86-opensource-2010.03.bin" (不包括引号,下同)
2:把下载下来的嵌入式版本的qt解压缩。命令:tar zxvf qt-everywhere-opensource-src-4.6.3; 建两个个文件夹qtopiaX86和qtopiaMIPS,在这两个文件夹里面,都再建两个文件夹source,target; 将解压出来的所有文件分别放入对应文件夹的source文件夹当中。
3:安装X86版本(这个版本主要用来编译X86版本的嵌入式程序,qvfb(PC上模拟嵌入式平台的程序)只能模拟X86版本的嵌入式环境)
1)进入/.../qtopiaX86/target当中(一定不要再存放源文件的source文件夹中configure,,会出现未知错误后面的make和make install一样),输入命令 “/.../qtopiaX86/source/configure -qt-kbd-tty -no-glib -no-xmlpatterns -qt-kbd-qvfb -no-Javascript-jit -opensource -no-fast -qt-mouse-pc -no-largefile -qt-mouse-qvfb -no-sql-QtSql -no-qt3support -no-webkit -no-mmx -no-3dnow -no-sse -no-sse2 -no-libtiff -no-libpng -no-libmng -no-libjpeg -no-openssl -no-opengl -no-nis -qt-gfx-qvfb -no-cups -no-iconv -no-dbus -embedded x86 //注意 -arch x86 //注意 -no-armfpa -little-endian -qt-freetype -nomake tools -nomake docs -depths 2,8,16,32 -no-script -xplatform qws/linux-x86-g++ //注意选择对应的编译平台 -no-scripttools -v" 红字部分,一定要写,其他的可以根据自己的实际情况选择;
PS:这部分有时候会出现比如: -nomake tools : unknown argument. 这里QT有个BUG,出问题的往往不是-nomake tools 而是它的上一个选项,这个问题曾经困扰我很久,因为我怎么看也没写错啊,为什么就报错呢?呵呵。另外网上有资料说编译X86的时候选择的一个选项-qt-kbd-pc,但经过我的实践,这个选项一选择,其他的几个-qt-mouse-*和-qt-kbd-*就会出现unknown argument错误。 上面这些可以写成一个脚本,免得每次都要输入。 脚本的形式如下: #!/bin/sh option="-qt-kbd-tty -no-glib -no-xmlpatterns -qt-kbd-qvfb -qvfb -no-javascript-jit -opensource -no-fast -qt-mouse-pc -no-largefile -qt-mouse-qvfb -no-sql-QtSql -no-qt3support -no-webkit -no-mmx -no-3dnow -no-sse -no-sse2 -no-libtiff -no-libpng -no-libmng -no-libjpeg -no-openssl -no-opengl -no-nis -qt-gfx-qvfb -no-cups -no-iconv -no-dbus -embedded x86 -arch x86 -no-armfpa -little-endian -qt-freetype -nomake tools -nomake docs -depths 2,8,16,32 -no-script -xplatform qws/linux-x86-g++ -no-scripttools -v" /opt/qtopiaX86/source/configure $option 这个形式也是我摸索了很久才找出来的正确写法哦,网上貌似很少有这方面说明的,大概是那些大牛不屑于说吧呵呵。反正之前我按网上一些资料的写法如: # ./configure \ -prefix /usr/local/Trolltech/QtEmbedded-4.6.2-arm \ -opensource \ -confirm-license \ -release -shared \ -embedded arm \ -xplatform qws/linux-arm-g++ \ -depths 16,18,24 \ -fast \ ………… 全部都不行。
2)configure之后,make这步很花时间,大概要几十分钟到几个小时吧,看机器配置了。
3)完成后make install
4)编译tslib触摸板库 进行如下操作: “/.autogen” #生成configure文件 “ echo "ac_cv_func_malloc_0_nonnull=yes" ”> #为了防止出现undefined reference to `rpl_malloc' 错误 /.configure --host=mipsel-linux-gcc --prefix=/usr/local make maek install
5 安装MIPSEL版本的QT
1) 编辑/.../qtopiaMIPS/source/mkspecs/qws/linux-mips-g++/qmake.conf。将其中mipsellinux-* 形式的语句全部改为mipsel-linux-*;
2)进入/.../qtopiaMIPS/target目录,输入/.../qtopiaMIPS/source/configure -xplatform qws/linux-mips-g++ -embedded mips configure的配置如下: #!/bin/sh option="-qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /usr/local/Trolltech/QtEmbedded-4.6.3-mips -no-xmlpatterns -no-javascript-jit -opensource -no-fast -no-largefile -no-sql-QtSql -no-qt3support -no-webkit -qt-freetype -no-libtiff -no-libpng -no-libmng -no-libjpeg -no-openssl -no-opengl -no-nis -no-cups -no-iconv -no-dbus -embedded mips -xplatform qws/linux-mips-g++ -arch mips -no-armfpa -little-endian -qt-freetype -nomake tools -nomake docs -nomake demos -nomake examples -depths 8,16,24,32 -no-script -no-scripttools -no-openvg -no-fontconfig -no-mitshm -no-xkb -I /usr/local/Trolltech/tslib-1.4/include -L /usr/local/Trolltech/tslib-1.4/lib -v" /opt/qtopia4.6.3/source/configure $option
PS:”-qt-kbd-tty ……-no-gfx-vnc “这一段一定要写在一行,否则会出现unknown argument错误; make make install 编译完成后把整个lib文件夹复制到你的NFS目录下的对应的MIPS编译安装的目录下比如NFS的目录是/home/4705s/而编译MIPS版QT时的安装目录是/usr/local/Qtopia,那么要在NFS目录下建立同样的路径,然后把lib文件夹放入。 同样的,把上面编译好的tslib整个移到对应的路径下。 修改/etc/profile 增加如下语句 export TSLIB_ROOT=/usr/tslib export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb export TSLIB_TSDEVICE=/dev/ts export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export QTDIR=/home/4750fs/usr/local/Trolltech/QtEmbedded-4.6.3-mips/ export QWS_SIZE="800x480" export QWS_MOUSE_PROTO="Tslib:/dev/ts" export LD_LIBRARY_PATH=/usr/tslib/lib 修改tislib下的/etc/ts.conf文件 增加一行“module_raw jz”(大家根据自己的情况修改,每个人的开发板不同,情况也不一样) 校准屏幕: 运行tslib的bin文件夹下的ts_calibrate,输入命令./ts_calibrate -qws会出现一个光点,点五次校准屏幕 PS:这一步一定要做,我一开始没有校准,搞得触摸屏用不了,弄得我还以为前面步骤有错,又重做了一次,浪费不少时间。