Qt-Embedded-4.5.2移植到s3c2440开发板
Qt是跨平台的基于C++的图形库,linux中大名鼎鼎的KDE桌面管理器就是基于Qt开发的。嵌入式开发中,Qt是比较常用的图形库。这两天我便把Qt-Embedde-4.5.2移植到我的2440开发板上了。 顺便说一句,Qt现在是属于Nokia的,去年刚被Nokia收购了过来。到Nokia官网上下载Qt的源码包,网址:http://qt.nokia.com/downloads
Qt是跨平台的基于C++的图形库,linux中大名鼎鼎的KDE桌面管理器就是基于Qt开发的。嵌入式开发中,Qt是比较常用的图形库。这两天我便把Qt-Embedde-4.5.2移植到我的2440开发板上了。
顺便说一句,Qt现在是属于Nokia的,去年刚被Nokia收购了过来。到Nokia官网上下载Qt的源码包,网址:http://qt.nokia.com/downloads-cn。我下载了X11和Embedded两个版本的。X11用于桌面开发,Embedded用于嵌入式开发。下载后得到两个压缩包,qt-x11-opensource-src-4.5.2.tar.gz和qt-embedded-linux-opensource-src-4.5.2.tar.gz。x11版的安装比较简单,./configure; make; make install就可以了。说实话,我下载这个版本主要是想用到其中的一个工具,qvfb,其实我的桌面环境的Qt是用apt-get安装的。我们可以在电脑你安装一个基于x86构架的Qt embedded,这样开发好的程序就可以先在电脑上调试。进入qt-x11-opensource-src-4.5.2目录,编译过程如下:
1 ./configure --prefix=你希望的安装目录 -embedded x86
2 make
3 sudo make install
这样我们开发好的基于x86的程序可以先在qvfb里仿真,调试完成后,我们再编译成arm版本的。
再来说一下开发板的触摸屏驱动,编译Qt时必须加入tslib这个触摸屏的库,不然编译出来的程序在开发板上运行是无法接受任何输入的。Qt-Embedded-4.4.5应该选用的tslib版本是1.4。如果用1.3版本的会有兼容性问题。这里讲一下tslib1.4的交叉编译过程。下载好tslib1.4的源码后,在其目录下执行:
1 ./autogen.sh
2 echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache
3 ./configure --host=arm-linux --prefix=/usr/local/tslib --cache-file=arm-linux.cache
4 make
5 sudo make install
--prefix后面的是你指定的安装目录,编译好后将/usr/local/tslib下的所有文件考到开发板上相同的目录下。在/usr/local/tslib/etc下建立ts.conf文件,内容如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
在开发板的/etc/profile里添加
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/arm/X11R6/bin
export PATH
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0(你的开发板dev下的触摸屏设备节点文件)
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
完成后,开发板重启后运行一下/usr/local/tslib/bin/ts_calibrate,看安装是否正确。
下面就说embedded版的安装,这个的安装稍微麻烦一点。因为是用于嵌入式设备的,要对其进行必要的裁减。主要是执行configure时要加入很多裁减的选项。这里提供一个从网上找来的配置脚本:
这里有两个地方需要说明一下:一是-qt-mouse-tslib选项,这个就是告诉Qt输入选择刚刚我们安装好的tslib驱动,下面两行指定了tslib的头文件和库的路径,如果不显式指明的话,后面的编译过程会出错。还有一个就是-embedded arm,这是指明处理器的版本,我的当然是ARM的了。
configure好后,就可以make了。这个编译的时间可谓相当之长,在我的机子上用了接近3小时,如果不裁减的话,估计得用四五个小时。完了之后在sudo make install一下就OK了。现在完成了在主机上的编译,要将其移植到开发板上实际上就是把编译好的相应的动态库拷贝到开发板上。必须用到的是这两个库文件,libQtCore.so.x.x和libQtGui.so.x.x,到Qt的安装目录下的lib文件夹将这些库拷到开发板的/lib下即可。还有需要拷过去的是字体文件,将lib下的font目录拷到开发板对应的目录即可。
另外,往/etc/profile中加入:
export set QWS_MOUSE_PROTO=Tslib:/dev/event0
这样基本上完成了Qt embedded 的移植,以后在开发应用的时候需要什么库,再往开发板上添加即可。我这样弄出来的库文件大概十几兆,对嵌入式设备来说是个不小的数目,Qt号称可以裁减到600K,也不知道是怎么弄的。
更多推荐
所有评论(0)