感谢支持
我们一直在努力

Ubuntu 10.04下移植QtE

最近弄QTE的移植,真是不胜其烦。现在把他整理出来,作为分享。


首先是软件包的各个版本


Ubuntu 10.04


qt-everywhere-opensource-src-4.6.3.tar.gz


arm-linux-gcc-3.4.1.tar.bz2


qt-sdk-linux-x86-opensource-2010.04.bin


tslib-1.4.tar.gz


一.选择交叉编译器


我 不知道,移植QT对交叉编译器有固定的版本要求。我查了很多资料,也没得到个什么确切的说法。比较靠谱的一个说法是“ arm-linux-gcc 3.4.1算是一个已经比较旧的版本了,现在我们在Linux 2.6.29环境下,用的是4.3.2的编译器。不过,因为还有一个S3C2410 + Linux 2.4.18的产品线,所以仍然没有舍弃 3.4.1。 ”。而且在其他参数配置相同的情况下,我用自己编译的arm-softfloat-linux-gnu-gcc 3.4.5总是会提示这样那样的错误。对此我办法解释,只好用arm-linux-3.4.1.


安装arm-linux-3.4.1。这个比较简单:


(1). 解压


#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 得到一个usr文件夹。


(2) .添加环境变量:


#vi /etc/bash.bashrc


在末尾加上:export PATH=$PATH:/*解压所在文件夹*/usr/local/arm/3.4.1/bin:


(3). 使新的环境变量生效:


#source /etc/bash.bashrc


(4). 检查路径是否设置正确:


#echo $PATH


(5) . 检查交叉编译工具是否安装成功:


#arm-linux-gcc -v


出现版本信息就OK了


二 .编译tslib1.4


(1)解压源代码:


tar zxvf tslib-1.4.tar.gz


cd tslib-1.4


(2)安装一些工具:


sudo apt-get install automake libtool


(3)执行脚本生成configure文件


./autogen.sh


(4)执行configure生成Makefile文件


echo “ac_cv_func_malloc_0_nonnull=yes”>$ARCH-linux.cache


./configure   –host=arm-linux   –cache-file=$ARCH-linux.cache  –prefix=/home/linux/tslib-3.4.1


(5)编译安装


make


make install


(6)拷到板子文件系统上


cp -a /home/linux/tslib-3.4.1    /source/rootfs


(7)修改ts.conf文件


vim  ts.conf


将第二行的#module_raw input的”#”去掉,并使 module_raw input顶格。


(8)设置开发板的环境变量。这里写成脚本文件


vim  qtsetenv.sh


export TSLIB_ROOT=/tslib-3.4.1


export TSLIB_TSDEVICE=/dev/event0


export TSLIB_CONFFILE=/tslib-3.4.1/etc/ts.conf


export TSLIB_PLUGINDIR=/tslib-3.4.1/lib/ts


export TSLIB_CALIBFILE=/etc/pointercal


export POINTERCAL_FILE=/etc/pointercal


export TSLIB_FBDEVICE=/dev/fb0


export QWS_SIZE=320×240


export QWS_DISPLAY=”LinuxFb:mmWidth100:mmHeight130:0″


export LD_LIBRARY_PATH=/tslib-3.4.1/lib:$LD_LIBRARY_PATH


export QWS_MOUSE_PROTO=Tslib:/dev/event0


export TSLIB_CONSOLEDEVICE=none


export TSLIB_TSEVENTTYYPE=H3600i


(9)测试。可以运行/tslib/bin下的测试文件了。

三.编译和安装QTE


移植QTE,一般要安装3个版本,一个PC机上的,一个ARM板子上的,一个是没有ARM板子时候仿真用的x86版。


1.首先安装PC版。


这个版本安装方法不少,有的使用 qt-sdk-linux-x86-opensource-2010.04.bin,有的使用 qt-x11-opensource-src-4.5.0.tar.bz2 这样的文件,在Ubuntu下甚至可以方便的使用apt-get: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer ,这样获取文件和库的最全,designer还是中文界面,不要环境设置等等。但是仍有所不便。这里使用bin文件。


(1)进入 qt-sdk-linux-x86-opensource-2010.04.bin 所在目录,设置该文件的权限为可执行 .


chmod +x qt-sdk-x86-opensource-2010.04.bin


(2) 安装 qt-sdk-linux-x86-opensource-2010.04.bin


./q t-sdk-linux-x86-opensource-2010.04.bin


按默认设置安装就行。安装路径我设置为:/host/mylinux/QT/qtsdk-2010.04


(3) 设置环境变量


这里也可以设置脚本文件,方便不同版本的qmake.但是这里奇怪的是,我的脚本文件运行了没效果,不知道怎么搞的。我只好写进系统:


vim  /etc/profile


在末尾添加:


QTDIR=/host/mylinux/QT/qtsdk-2010.04/qt -// 这是设置QT 的所在的路径


export PATH=$QTDIR/bin:$PATH        // 设置QT 可执行命令的目录


export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH    //设置QT 库文件目录


(4)建立 hello world工程,测试 qt 。


由于 Ubuntu10.04系统不带 g++编译器,而 qt需要用到 g++编译器,我们需要自行安装 g++:


sudo apt-get install g++


编写一个 hello.cpp文件(放在一个hello的 目录里)


Hello.cpp内容:


#include <QApplication>


#include <QLabel>


int main(int argc,char* argv[])


{


QApplication app(argc,argv);


QLabel* label = new QLabel(“hello qt”);


label->resize(200,100);


label->show();


return app.exec();


}


然后在hello这个文件下依次:qmake -projct , qmake hello.pro , make,生成一个hello可执行文件,运行以下,应该可以看见一个简单的对话框。


(5)如果要安装qtE for x86的话,这里还要编译qvfb.


(a).首先补充一些库文件


sudo apt-get install libpng-dev libx11-dev libglui-dev xorg-dev


(b).添加一些头文件             <!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>


将 /host/mylinux/QT/qtsdk-2010.04/qt/tools/shared/deviceskin/ 下    deviceskin.h , deviceskin.cpp 都拷到 /host/mylinux/QT/qtsdk-2010.04/qt/tools qvfb 文件夹下面.


(c) .qmake -project     qmake qvfb.pro


(d).修改Makefile文件,在LIBS选项后面添加 -lXtst,注意哦:l是小写,X是大写。


(e)make

2.安装x86+qvfb版


参数没有配置成功,先空着


3.安装arm版


无论是x86还是arm步骤说起来很简单,三板斧(configure,make,make install),但是麻烦在configure的参数,极其变态。不仅仅多,复杂,而且往往别人编译可以用的参数配置到你这里就偏偏不能用。当然作为我们初学者,“盈科而进”的学习是比较踏实的,一步一个坑,每个坑都吃透了。但我相信很少人能这么做。参数本书并不是什么很难的东西,偏偏是环境不一样,参数配置还不一样。我问过很多人,他们的参数都是自己试过成功的,偏偏我拿过来不能用。最叫人火大的是make这一步时间很长,我的机器比较好的,3G的内存,别的什么都不开也要将近两个小时。你等了一个多小时后他才会给出错误代码,效率太低了。


我的步骤:


(1)解压tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz,


(2)然后进入   cd qt-everywhere-opensource-src-4.6.3.


(3)configure


./configure -prefix /host/mylinux/QT/qt-embedded-4.6.3-arm -debug-and-release -qt3support -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake examples -nomake demos -nomake docs -no-cups -iconv -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 8,16,24,32 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-dbus -qt-sql-sqlite -qt-kbd-qvfb -qt-kbd-tty -qt-mouse-pc -no-glib -plugin-mouse-tslib -I/source/rootfs/tslib-3.4.1/include -L/source/rootfs/tslib-3.4.1/lib -D__ARM_ARCH_5TEJ__


这里有几点要注意: -D__ARM_ARCH_5TEJ__和   -little-endian 少了我是通不过,如果你没 加并且有幸出错,百度或者google一下错误代码,应该能查的到。网上有大量的资料里这两都没加也通过,这正是叫人郁闷的地方。这个参数配置来自<Qt embedded配置选项>。 qt-everywhere- opensource-src是4.6.0的。参数解释也可以看他的。


这里还会有两个选择界面,一个 选择o,即是选择开源协议,一个 接受协议,填写 yes。


(4)make    然后是漫长的等待,1~2个小时。


(5)最后 sudo make install.一定要sudo。


(6)设置环境变量


这里也可以设置脚本文件,方便不同版本的qmake.写进系统(和上面的不能同时共存):


vim  /etc/profile


在末尾添加:


QTDIR=/host/mylinux/QT/qt-embedded-4.6.3-arm -// 这是设置QT 的所在的路径


export PATH=$QTDIR/bin:$PATH        // 设置QT 可执行命令的目录


export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH    //设置QT 库文件目录


(7)将安装好的 qt-embedd-4.6.3-arm(全拷?????标记一下 )拷入arm板子的文件系统/source/rootfs/QT下,


(8)添加tslib环境脚本对QTE相关项


vim  qtsetenv.sh


export set QTDIR=/QT/qt-embedd-4.6.3-arm


export set QTEDIR=/QT/qt-embedded-4.6.3-arm


export PATH=$PATH:$QTDIR/bin


export QT_QWS_FONTDIR=$QPEDIR/lib/fonts


export QT_PLUGIN_PATH=$QTDIR/plugins/


暂时到这里,还有问题没有解决,一个x86+qvfb的安装,一个在板子上运行编好的可执行文件总提示找不到库,还有就是PC机上运行脚本不起作用,等有空再说。

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu 10.04下移植QtE
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏