天嵌 ARM开发社区

 找回密码
 注册
查看: 20406|回复: 36

编译Qt 4.7 Beta II

[复制链接]
tea_liang 发表于 2010-8-22 11:53:27 | 显示全部楼层 |阅读模式
本帖最后由 tea_liang 于 2010-8-22 11:55 编辑

虽然Qt4.5已经够强大了,我在开发的时候也发现它比起其他GUI编程,开发界面程序更加方便快捷,功能更加齐全。但新版的Qt 有更多令人心动的功能。比如说,在Qt4.6里面就有QpropertyAnimation这个类,用几行代码就能实现窗体的移动或者翻转。在Qt 4.7里面,nokia主推QML技术。什么是QML?上网查查吧。这种技术可以让开发者非常容易开发出非常炫的界面程序。虽然在QT4.5也能实现这些功能。但要自己写很多代码。像我在项目开发中实现一个滑屏功能就要写很多代码。正是冲着QT的新功能,冲着那些令人心动的开发技术,我于是乎就开始上网查找资料学习编译最新版qt。
实话说,编译Qt 4.7其实没什么技术含量可言。非常简单,网上也有很多资料教我们如何移植新版的QT4.7。在这里我用nokia目前最新版的QT——qt4.7 Beta II进行编译。我是在天嵌TQ2440上移植的。所以这篇文章适合TQ2440的用户看,当然其他开发板应该也是类似的。再强调一点的是,如果你曾经按着天嵌的QT完全开发手册编译过qt4.5的话。相信你会非常顺利完成下面的操作,如果没编译过Qt4.5的。还是建议你先去参考天嵌的QT完全开发手册编译Qt4.5吧,不然可能会遇到非常多问题。废话少说,现在开始说下怎么移植qt4.7(其实说编译更确切!)。
(一)准备工作
1、下载最新版本的Qt 4.7 Beta II :
http://get.qt.nokia.com/qt/sourc ... -4.7.0-beta2.tar.gz
2、安装天嵌提供的交叉编译器4.3.3,一般用tq2440开发都用这个交叉编译器。如果你还没了解什么是交叉编译器的话,还是先补习一下吧。看看天嵌的手册。
3、编译天嵌提供的tslib-1.4.1.tar.bz2,这个东西是触摸屏库,编译QT4.7 betaII时要用到,先拷贝到一个目录,然后用tar xfvj tslib-1.4.1.tar.bz2进行解压缩,进入tslib-1.4.1这个目录,运行./build就可以编译了。编译完之后,会生成一个__install的文件夹,里面有两个文件夹,分别是:inclue 和lib,后面编译Qt的时候会用到。编译完之后,我把它更改名称为mytslib,并且拷贝到/opt/EmbedSky/qt-4.7目录下。这样tslib库的绝对路径是:/opt/EmbedSky/qt-4.7/mytslib/lib了,而tslib包含文件夹得绝对路径是:/opt/EmbedSky/qt-4.7/mytslib/include
(二)编译Qt 4.7 Beta II
把qt-everywhere-opensource-src-4.7.0-beta2.tar.gz拷贝到/opt/EmbedSky/qt-4.7里面。用 tar zxvf qt-everywhere-opensource-src-4.7.0-beta2.tar.gz解压。cd /opt/EmbedSky/qt-4.7/ qt-everywhere-opensource-src-4.7.0-beta2/目录。然后新建一个配置shell文件。我建立一个叫config.sh的文件。然后,把./configure -prefix /opt/EmbedSky/qt-4.7/qtlib –embedded arm -release -opensource -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia  -no-svg -no-webkit -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg -no-libmng -no-libtiff -no-multimedia -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++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib -I /opt/EmbedSky/qt-4.7/mytslib/include  -L /opt/EmbedSky/qt-4.7/mytslib/lib 拷贝到config.sh文件里面并保存。然后在/opt/EmbedSky/qt-4.7/ qt-everywhere-opensource-src-4.7.0-beta2下执行./config.sh。就可以进行Qt4.7 Beta II的裁剪了。上面的配置信息是可以根据需要进行修改的,详细配置信息可以参考http://www.qtcn.org/bbs/read.php?tid=19214
执行上面脚本后,在/opt/EmbedSky/qt-4.7/目录下建立一个qtlib目录。用来存放编译后生成的库文件,-prefix /opt/EmbedSky/qt-4.7/qtlib这个参数的意思是把库文件拷贝到/opt/EmbedSky/qt-4.7/qtlib目录下。-I /opt/EmbedSky/qt-4.7/mytslib/include  -L /opt/EmbedSky/qt-4.7/mytslib/lib 一定要正确,就是第一大步编译的那个tslib,还记得吗?现在用上他了。然后执行命令make ,完毕后再执行make install。我的电脑编译过程要一个小时左右。那么在/opt/EmbedSky/qt-4.7/qtli 就生成了Qt 4.7 Beta II在arm上运行的库了。把它拷贝到文件系统就OK了。拷到哪里呢?这里可以参考天嵌的手册。不过这里还是说下吧。我用的是天嵌光盘自带的Qt 4.5 文件系统。例如我把文件系统解压到了/opt/EmbedSky/目录下。并且把文件系统文件夹的名称改为了root_nfs。那么进入/opt/EmbedSky/root_nfs/opt/qt-4.5/目录。然后rm lib –R删除lib目录,再rm plugins –R 删除plugins目录。把刚才qtlib文件夹里面的lib和plugins拷贝到qt-4.5目录下。cp /opt/Em        bedSky/qt-4.7/qtlib/lib  /opt/EmbedSky/root_nfs/opt/qt-4.7/    cp /opt/EmbedSky/qt-4.7/qtlib/plugins /opt/EmbedSky/root_nfs/opt/qt-4.7/。
最后,把/opt/EmbedSky/root_nfs/opt下的qt-4.5更改名称为 qt-4.7,操作是:mv qt-4.5 qt-4.7。现在在更改一下文件系统/bin/下的qt4文件,更改如下:
#!/bin/sh

echo Start Qt-4.7 > /dev/tq2440_serial0
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_CONFFILE=/etc/ts.conf
export set TSLIB_PLUGINDIR=/lib/ts
export set HOME=/root
export set QTDIR=/opt/qt-4.7
export set QPEDIR=/opt/qt-4.7
export set QTDIR1=/sbin
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
export set QWS_MOUSE_PROTO="TSLIB:/dev/event0"
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH

if [ -f /etc/pointercal ]  
; then
    #ts_calibrate       
        /qml/qml -qws
        # > /dev/null 2>/dev/null
else
        ts_calibrate
        /qml/qml -qws
        $QPEDIR/bin/calculator -qws
        # >  
/dev/null 2>/dev/null
fi


下面这几行也可以用自己第一步编译的tslib,这里我偷懒,直接用文件系统里面的。哈哈
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_CONFFILE=/etc/ts.conf
export set TSLIB_PLUGINDIR=/lib/ts

(三)测试Qt 4.7 Beta II 是否可用
怎么测试Qt 4.7 Beta II的编译已经成功了呢?Qt4.7有QML功能。写个打开QML的程序,然后在程序里面调用该QML就知道Qt4.7是否可用了。在附件里面有我的工程。可以拿去编译一下。把这个工程放到/opt/EmbedSky/root_nfs下编译。然后nfs加载。就可以运行QML工程了。我的工程很简单。就是调用一个HELLO WORLD qml脚本。更加炫的效果你去QT example里面的declarative文件夹里面找。
:$ 是一个冒号加一个$

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2 +18 收起 理由
不言DXH + 8 赞一个!
szlje66 + 10

查看全部评分

machoe 发表于 2010-8-22 14:56:27 | 显示全部楼层
不错,感谢你对天嵌的支持,我马上给你加精。希望你再做几个测试程序,一起帖出来。
zhaixingchen 发表于 2010-8-27 11:17:20 | 显示全部楼层
支持,先收藏用到了再学习
天嵌_support1 发表于 2010-8-27 12:27:17 | 显示全部楼层
1# tea_liang


你发了贴子很细心,很好的习惯。
论坛中会把一些字符转换成表情图片,你也提示出来。
这个论坛开发商应该向你赞一个。
nichmean 发表于 2010-9-13 16:50:48 | 显示全部楼层
好东西!先收藏!
版主加油!!!!
mysde 发表于 2010-9-14 21:51:57 | 显示全部楼层
谢谢分享
支持LZ
newcomer 发表于 2010-10-1 09:07:23 | 显示全部楼层
有成功的么?我用qt4.7+creator 2.0 没报错,但没看到效果。 hello world 是黑白的。怎么回事?
newcomer 发表于 2010-10-3 22:37:08 | 显示全部楼层
我的LCD是7寸的,800X600  把 qt4.7 的lib 和plugin替换了4.5的lib和plugin 。涉及qws的程序出现了  segment fault。
请问有人知道怎么解决的么?
天嵌_support1 发表于 2010-10-7 15:44:53 | 显示全部楼层
本帖最后由 embedsky_lxt 于 2010-10-7 15:46 编辑

8# newcomer


你的应用程序是怎么编译出来的呢?
1.有编译起问题不同引起。
2.LCD的尺寸的改变也会影响的。你要qt-embedded 所支持的范围内。
以上是一些网友遇到的这种情况的总结
newcomer 发表于 2010-10-21 10:26:55 | 显示全部楼层
原来我用最新的qt4.7出现这个问题,换成beta2版就没有这个问题。

有用最新版编译成功的么?
阿空 发表于 2010-10-21 19:44:47 | 显示全部楼层
我用ebi4.3.3编译qt4.6会有segmentation fault问题,苦恼
jlwang1985 发表于 2010-10-26 10:41:29 | 显示全部楼层
你好,我用了QT4.5的,也做好了nfs挂载,想在pc机通过minicom连接开发板也成功了,但是,在运行QT的一个mainwindows时总是提示:Permission denide,我也给程序通过chmod + x mianwindow来增加权限了,但是还是运行出现上面的结果,你能帮我分析下吗?谢谢
天嵌_support1 发表于 2010-10-26 10:52:30 | 显示全部楼层
12# jlwang1985


把权限改最大: 777
liyayao 发表于 2010-10-29 19:15:59 | 显示全部楼层
我用正式版就不行,用你这个就行啊
竹影 发表于 2010-11-1 23:11:12 | 显示全部楼层
欢迎加群83864208,一起学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-7-16 16:41 , Processed in 1.046875 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表