这是我第一次写这类东西,以前总是搞不懂为什么会有人去写什么博客呢?现在明白写博客既是与大家交流 也是对自己辛苦工作的一个总结!
闲话少说进入正题:qt移植到omap3530
其实tslib和qt的移植网上一大堆,随便收索得到,但它们都没有给出出现问题的解决办法,但在实际中,我们自己安装的时候,往往会出现各种错误。我写这个其实就是对我自己出现的问题的总结。
一、准备工作
vm虚拟机+ubuntu10.04
qtopia-core-opensource-src-4.3.5
arm-none-linux-gnueabi-2007q3
tslib-1.4
g++
二、tslib和qt移植
网上有很多的教程比如:http://www.cnblogs.com/rockstone/archive/2010/01/15/1648836.html
我大多数步骤也是按这篇文章安装的。
步骤如下:
tslisb移植
1.
tar xzvf tslib-1.4.tar.gz
cd tslib/
export CC=arm-none-linux-gnueabi-gcc
export CXX=arm-none-linux-gnueabi-g++
2.
./autogen.sh
执行这条命令可能会报错,需要安装以下工具:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
//问题来了,当我输入./autogen.sh时,系统报错,要想解决也就是安装上面三个工具。但是我的没这么简单。最开始我是用虚拟机装的ubuntu10.10,当我输入这类"sudo apt-get install"命令的时候总是报错,说什么下不下来找不到地址什么的,当我百度的时候发现是要更新软件源(我发现我的源竟然是美国的地址),然后我就去更新,可惜始终是更新失败。最后我想是我系统有问题,就换了ubuntu10.04。
但我把ubuntu10.04按我以前的方法装在虚拟机上时,我发现我装的时候根本没有什么装系统的界面,vm直接一路个我装过去了。后来百度才知道我选择的是easyinstall,vm会自动给我装。我这才发现搞不好我以前的10.10版没什么问题,其实是我装的时候选择了easyinstall,导致缺少很多组件,才让那个系统根本不适合开发。所以以后用虚拟机的时候不要用easyinstall,自己手动装。而且做开发的话最后好用dvd版的,里面软件比desktop版的全以前。
从新装了系统后安装了上面三个软件后,在执行./autogen.sh就行啦!
3.
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gnueabi.cache
./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no PLUGIN_DIR=/home/zhaopan/tslib/plugins -prefix=/home/zhaopan/tslib/build -host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache 2>&1 | tee conf_log
4.
make 2>&1 | tee make_log
make install
5. 将/home/zhaopan/tslib/build/lib下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
6. 将/home/zhaopan/tslib/build/etc下的ts.conf拷贝到开发板的/etc下
7. 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
后面输入这些命令我都没出现什么问题了
qt移植
1. 准备
tar xvf qtopia-core-opensource-src-4.3.5.tar.gz
cd qtopia-core-opensource-src-4.3.5
修改mkspecs/qws/linux-arm-g++/qmake.conf文件,替换所有arm-linux为arm-none-linux-gnueabi
(没出问题)
2. 配置
./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,32 -no-qt3support -prefix ${HOME}/work/qt/target -fast -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -optimized-qmake -no-nis -no-separate-debug-info -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -qt-kbd-usb -no-kbd-qvfb -no-mouse-qvfb -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -I /home/zhaopan/tslib/build/include -L /home/zhaopan/tslib/build/lib
其中/home/zhaopan/tslib/build/include是tslib的include目录,/home/zhaopan/tslib/build/lib是tslib的lib目录,配置完成后会提示successful,如果没有,google出错信息,将其解决掉,直到successful才继续往下做
//好了,问题来了 当我按这种格式输入命令时出现一连串错误,如下图:
一看见这个错误当时就晕了,经过不断努力最终还是解决了。 首先这里面其实是有两个错误,出现syntax error这种错误是因为我没有安装g++,安好g++后这个错误是没了,但最下面的“the tsilb functionality ......”还是存在,又经过努力发现要到mkspecs/qws/linux-arm-g++/qmake.conf 里,在QMAKE_INCDIR后面加上 /....../tslib/build/include这个路径 在QMAKE_LIBDIR后面加上/.........../tslib/build/lib这个路径。加上后就没问题了。
3. 编译 安装
make(时间确实长,慢慢等)
//这里错误又来了,刚开始每次make我都出现这个问题
又经过一番努力,才知道要么是configure后的参数配置错了,要么是qt与交叉编译器的版本不符合,我感觉是我的配置参数有问题,所以回去改了。先#make confclean 清除以前的配置,在./configure+(新配置)。
这个问题也这样解决了。新配置是用的这个里面的配置http://lanxinyuchs.iteye.com/blog/965372
然后在输入make install
4. 下载
1) 拷贝${HOME}/work/qt/target下整个lib目录到开发板下/opt/qtopia目录下
2) 删掉/opt/qtopia/lib/fonts目录下多余的字体文件,只留下cour.pfa和cursor.pfa两个文件
3) 设置环境变量,在开发板文件系统的/etc/profile文件里添加以下命令:
export QTOPIA=/opt/qtopia
export LD_LIBRARY_PATH=$QTOPIA/lib:$LD_LIBRARY_PATH
export PATH=$QTOPIA/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/touchscreen0
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QT_QWS_FONTDIR=/opt/qtopia/lib/fonts
5. 测试移植结果
拷贝${HOME}/work/qt/target/examples/tutorial/t1/t1到开发板下/opt/qtopia/bin目录下并运行t1程序
./t1 -qws
将显示 helloworld界面
//当我执行./t1 -qws时又出现问题在目标板上编译时出现这个问题,解决办法是到主机上找到libstdc++.so.6这个文件,路径是在你的交叉编译器安装的文件夹里比如:/....../embest/arm-2007q3/arm-none-linux-gnueabi/lib/下,然后拷贝到板子上的/opt/qtopia/lib下,并在板子上改/etc/profile文件,加上/opt/qtopia/lib这个路径的环境变量。
然后再运行就可以了,但还是有错误会有
这个错误我没去解决了,不过网上说是因为./configure后面的参数配置有问题 ,好像把-qt-mouse-pc -qt-mouse-tslib这两个参数删了就没问题了,再从新配置编一次就好了,我懒了占时没去改了,呵呵!