Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468541
  • 博文数量: 150
  • 博客积分: 2706
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 11:41
文章分类

全部博文(150)

文章存档

2012年(7)

2011年(6)

2010年(68)

2009年(69)

我的朋友

分类: LINUX

2009-11-25 11:19:37

 

转自:http://www.cnblogs.com/cnnbboy/archive/2009/06/06/1497780.html

前言:非常漫长的过程,可以说,移植qte4.5.1是我移植qte以来最难的一次,前面几次都非常顺利的完成了,这次却花了很大的力气,期间得到了阿乐的大力帮助,可以说移植完成,是我们两个人的汗血啊。

摘要:在友善之臂QQ2440 ARM9开发版上移植了最新的qt-embedded-linux-opensource-src-4.5.1,并且使用了tslib1.4,总结下移植过程和出现的问题。

正文:

为了参加博创的比赛,决定移植Qte4.5.1,Qt的嵌入式版本名字变来变去,花了很久才搞清,简单地来说,目前Qtembedded就是Qt嵌入式的库,而Qtextended就是原来的Qtopia。

首先要有配置好的环境,本文使用的编译环境如下:

主机系统:Ubuntu 8.04
主机编译器:gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
交叉编译器:arm-linux-gcc-3.4.1
软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz

qt-x11-opensource-src-4.5.1.tar.gz


移植过程:

平时程序都是在PC上完成的,所以我们需要先安装X11版的Qt来获得qvfb这个工具。嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。

qt-x11-opensource-src-4.5.1编译安装过程:

1.解压文件

将qt-x11-opensource-src-4.51.tar.gz复制到/root/local/qt目录下,进行解压,在终端中进行如下操作:

#cd /root/local/qt

#tar zxvf qt-x11-opensource-src-4.5.1.tar.gz

解压完成后,得到/usr/local/qt/qt-x11-opensource-src-4.5.1目录。下面就开始进行编译了。

2.编译及安装qt-x11-opensource-src-4.5.1

进入/usr/local/qt/qt-x11-opensource-src-4.5.1目录,进行编译安装。在终端中进行如下操作:

#./configure –qvfb

#make

#cd tools/qvfb

#make

#cd ../..

#make install

3.复制文件

make install完成后,会在/usr/local目录下生成一个Trolltech目录,形成/usr/local/Trolltech目录,这是qt-x11-opensource-src-4.5.1安装后所在的目录,进入/usr/local/Trolltech会看到一个Qt-4.5.1的目录,将/usr/local/qt/qt-x11-opensource-src-4.5.1/tools/qvfb目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.5.1/bin目录下,在终端中操作(确定当前目录是/usr/local/qt/qt-x11-opensource-src-4.5.1):

#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.5.1/bin


qt-embedded-linux-opensource-src-4.5.1编译安装过程,为了程序开发的便捷性,我安装了x86版和arm版,先在PC上使用x86版和qvfb开发,完成以后再使用arm版交叉编译放到开发版上运行。

X86版安装过程:

1.解压文件

将qt-embedded-linux-opensource-src-4.5.1.tar.gz复制到/root/local/qt目录下进行解压,解压完成后,得到/usr/local/qt/qt-embedded-linux-opensource-src-4.5.1目录。将qt-embedded-linux-opensource-src-4.5.1重命名为qt-embedded-linux-opensource-src-4.5.1-x86。再解压一下qt-embedded-linux-opensource-src-4.5.1.tar.gz,并重命名为qt-embedded-linux-opensource-src-4.5.1-arm,在终端中进行操作:

#cd /root/local/qt

#tar zxvf qt-embedded-linux-opensource-src.tar.gz

#mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-x86

#tar zxvf qt-embedded-linux-opensource-src.tar.gz

#mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-arm

2.编译及安装qt-x11-opensource-src-4.5.1-x86

进入/usr/local/qt/qt-x11-opensource-src-4.5.1-x86目录,进行编译安装。在终端中进行如下操作:

#cd /usr/local/qt/qt-x11-opensource-src-4.5.1-x86

#./configure -qvfb

#make(gmake)

#make install(gmake install)

OK,qt-x11-opensource-src-4.5.1-x86就编译好了。

3.编译及安装qt-x11-opensource-src-4.5.1-arm

安装这个是最为关键的,因为编译好后要把lib拷贝到板子上

对于触摸屏幕,我使用的是tslib1.4

交叉编译tslib过程如下:

解压到/home下

#./autogen.sh
#./configure --prefix=/home/duancp/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes (可以先生成个cache文件)

#make

#make install-strip //生成瘦身应用程序和库

编译qt-x11-opensource-src-4.5.1-arm

进入/usr/local/qt/qt-x11-opensource-src-4.5.1-arm目录,进行编译安装。在终端中进行如下操作:

./configure "

-release "

-shared "

-fast "

-no-largefile "

-qt-sql-sqlite "

-no-qt3support "

-no-xmlpatterns "

-no-mmx "

-no-3dnow "

-no-sse "

-no-sse2 "

-no-svg "

-no-webkit "

-qt-zlib "

-qt-gif "

-qt-libtiff "

-qt-libpng "

-qt-libmng "

-qt-libjpeg "

-make libs "

-nomake tools "

-nomake examples "

-nomake docs "

-nomake demo "

-no-nis "

-no-cups "

-no-iconv "

-no-dbus "

-no-openssl "

-xplatform qws/linux-arm-g++ "

-embedded arm "

-little-endian "

-qt-freetype "

-depths 16,18 "

-qt-gfx-linuxfb "

-no-gfx-transformed "

-no-gfx-multiscreen "

-no-gfx-vnc "

-no-gfx-qvfb "

-qt-kbd-usb "

-no-glib "

-qt-mouse-tslib -I/home/cnnbboy/opt/include -L/home/cnnbboy/opt/lib

之所以裁剪那么多参数,是因为开发版空间有限,只要完成我所需要的功能就可以了,之后配置环境变量,我的配置如下:

export QTDIR=/qq2440

export T_ROOT=/tslib

export PATH=$QTDIR/bin:$PATH

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=tslib:/dev/input/event0

export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

最后,运行qt的测试程序成功,移植OK了。

出现的问题:

运行测试程序中说缺少librt.so.1 ,libstdc++.so.6 ,libgcc_s.so.1这三个文件,这是因为交叉编译的环境不同,从主机上的拷贝过去即可。还提示找不到字体,是因为编译时没有设定安装目录,在板子上建立一个连接就可以了。

参考资料:

[1]http://cgy136652.blog.163.com/blog/static/36168728200932410649487/

[2]http://blog.chinaunix.net/u2/86708/showart_1924834.html

[3]http://blog.chinaunix.net/u2/75270/showart_1793535.html

[4]http://blog.chinaunix.net/u1/39383/showart_1853496.html

[5]

[6]

阅读(529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~