Qt4.8.3移植总结
2014-02-25 15:21
357 查看
最近买了块天嵌的TQ210,对最新的Qt4.8.3进行了移植,现在做个总结,方便以后查看。
Qt是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序。使用Qt开发的软件,相同的代码可以在任何支持的平台上编译与运行,而不需要修改源代码。会自动依平台的不同,表现平台特有的图形界面风格。
Qt在嵌入式开发中有着广泛的应用,使用Qt只需编写一次应用程序和UI,无须重新编写源代码,便可跨不同的桌面和嵌入式操作系统进行部署,既节省了时间又降低开发成本。
操作系统:Debian wheezy 32位
gcc版本: 4.7.1
arm-linux-gcc:4.4.6 (for TQ210 EmbedSky Tech)
开发板:TQ210(天嵌)
液晶屏:7寸(800×480)
为什么要装tslib?主要是为了校准触摸屏以及去抖等功能,为了能更好的使用触摸屏还是装吧。
下载地址:http://sourceforge.net/projects/tslib.berlios/files/
网上说的tslib1.4其实就是tslib1.0.4,怎么就变成1.4了,汗。。。这个工具比较小,配置一下后直接编译就行了。
prefix后面是安装目录,自己随便定义,装好后修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#号,然后把/opt/tslib-1.0里的文件都拷入开发板,比如我放在了/usr/local里。再配置开发板的环境变量,让tslib能正常工作。
运行/usr/local/bin中的ts_calibrate进行校准,成功的话会出现界面,并让你点击十字符号,完成后会生成/etc/pointercal文件,这是触摸屏的校准配置文件。
遇到的问题:
1.在autogen时出错,提示
./autogen.sh: 4: autoreconf: not found
这是因为系统没有安装automake,装上就行了。
2.在make时出错,提示
In function ‘open’,
inlined from ‘main’ at ts_calibrate.c:229:11:
/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [ts_calibrate.o] Error 1
这是因为open函数的语法不符合最新的gcc,在/tests/ts_calibrate.c中加入open的第三个参数:
为了开发方便,我们一般在PC端写好程序,仿真,调试完成后再用arm-linux-gcc编译成arm版的程序,最后拷到开发板上运行。所以我们必须编译两套Qt库文件:PC端的和arm端的。
下载页面:http://qt-project.org/downloads
选择Qt libraries 4.8.3 for Linux/X11得到qt-everywhere-opensource-src-4.8.3.tar.gz,这个和Qt libraries 4.8.3 for embedded Linux是同一个文件,配置不同就可以编译出不同的版本,所以我们下一个就行了,解压开,配置,make。
因为库比较大,要编译好一段时间,完成后install,-prefix后面的是安装目录,根据需要修改。
在编译过程中出错,提示
g++: error: unrecognized command line option ‘-fuse-ld=gold’
这是Qt的一个bug:https://bugs.webkit.org/show_bug.cgi?id=89312
在装有gold linker的系统里,编译脚本会加入-fuse-ld=gold选项,但这个选项gcc是不支持的。解决办法是移除该选项,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold。
源代码是一样的,重新配置就行了。
配置选项要根据自己的硬件选取,这样编译出来的库文件才会比较小。装好后把目录下的imports、lib、mkspecs 、plugin文件夹拷到开发板上的/opt/Qt目录下,目录随便,和环境变量里的一致就行。然后配置开发板的环境变量,让他能找到Qt。
Qt Creator是一个开发Qt程序的IDE,当然也可以完全用命令行进行开发,个人习惯而已。下载地址还是http://qt-project.org/downloads,选择下面的Qt Creator 2.6.0 for Linux/X11 32-bit,如果是64位系统,选择64位版本。下载得到qt-creator-linux-x86-opensource-2.6.0.bin,运行安装即可。
装好后配置qmake,进入工具->选项->构建和运行->Qt 版本,添加上面装好的X11和arm版的qmake,qmake在各自的bin文件夹里,结果如下图。
![](http://wuyuans.com/wp-content/uploads/2012/11/Qt_Version.jpg)
添加交叉编译工具链GCCE。
![](http://wuyuans.com/wp-content/uploads/2012/11/Qt_gcc.jpg)
确定,至此配置完成,接下来我们来测试一下。
新建文件或工程->Qt Gui 应用->下一步,选上Embedded Linux,在详情里把x11的去掉(x11是PC上的),如下图。
![](http://wuyuans.com/wp-content/uploads/2012/11/Hello_Qt.jpg)
后面的保持默认就行了。完成后打开界面文件,添加一个Hello Qt的Label,构建->运行。
![](http://wuyuans.com/wp-content/uploads/2012/11/Hello_Qt_x11.jpg)
在左下角切换到Embedded Linux版本,构建,复制编译好的Hello_Qt文件到开发板,运行./Hello_Qt出错:
QWSSocket::connectToLocalFile could not connect:: Connection refused
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the “-qws” command-line option.
按照提示添加-qws再次运行。
成功,查了一下,原来Qt的运行需要有一个Qt的服务进程,添加-qws后就是把当前Qt程序当作server了。
至此,Qt移植全部完成了。
作者:wuyuan
本文来自Wuyuan's Blog 转载请注明,谢谢!
文章地址: http://wuyuans.com/2012/11/qt4-8-3-transplant/
Qt是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序。使用Qt开发的软件,相同的代码可以在任何支持的平台上编译与运行,而不需要修改源代码。会自动依平台的不同,表现平台特有的图形界面风格。
Qt在嵌入式开发中有着广泛的应用,使用Qt只需编写一次应用程序和UI,无须重新编写源代码,便可跨不同的桌面和嵌入式操作系统进行部署,既节省了时间又降低开发成本。
0.编译环境
操作系统:Debian wheezy 32位gcc版本: 4.7.1
arm-linux-gcc:4.4.6 (for TQ210 EmbedSky Tech)
开发板:TQ210(天嵌)
液晶屏:7寸(800×480)
1.安装tslib
为什么要装tslib?主要是为了校准触摸屏以及去抖等功能,为了能更好的使用触摸屏还是装吧。下载地址:http://sourceforge.net/projects/tslib.berlios/files/
网上说的tslib1.4其实就是tslib1.0.4,怎么就变成1.4了,汗。。。这个工具比较小,配置一下后直接编译就行了。
遇到的问题:
1.在autogen时出错,提示
./autogen.sh: 4: autoreconf: not found
这是因为系统没有安装automake,装上就行了。
In function ‘open’,
inlined from ‘main’ at ts_calibrate.c:229:11:
/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [ts_calibrate.o] Error 1
这是因为open函数的语法不符合最新的gcc,在/tests/ts_calibrate.c中加入open的第三个参数:
2.安装Qt4.8.3
为了开发方便,我们一般在PC端写好程序,仿真,调试完成后再用arm-linux-gcc编译成arm版的程序,最后拷到开发板上运行。所以我们必须编译两套Qt库文件:PC端的和arm端的。
2.1.安装Linux/X11版Qt
下载页面:http://qt-project.org/downloads选择Qt libraries 4.8.3 for Linux/X11得到qt-everywhere-opensource-src-4.8.3.tar.gz,这个和Qt libraries 4.8.3 for embedded Linux是同一个文件,配置不同就可以编译出不同的版本,所以我们下一个就行了,解压开,配置,make。
在编译过程中出错,提示
g++: error: unrecognized command line option ‘-fuse-ld=gold’
这是Qt的一个bug:https://bugs.webkit.org/show_bug.cgi?id=89312
在装有gold linker的系统里,编译脚本会加入-fuse-ld=gold选项,但这个选项gcc是不支持的。解决办法是移除该选项,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold。
2.2.安装embedded版Qt
源代码是一样的,重新配置就行了。
3.安装Qt Creator
Qt Creator是一个开发Qt程序的IDE,当然也可以完全用命令行进行开发,个人习惯而已。下载地址还是http://qt-project.org/downloads,选择下面的Qt Creator 2.6.0 for Linux/X11 32-bit,如果是64位系统,选择64位版本。下载得到qt-creator-linux-x86-opensource-2.6.0.bin,运行安装即可。![](http://wuyuans.com/wp-content/uploads/2012/11/Qt_Version.jpg)
添加交叉编译工具链GCCE。
![](http://wuyuans.com/wp-content/uploads/2012/11/Qt_gcc.jpg)
确定,至此配置完成,接下来我们来测试一下。
4.Hello Qt
新建文件或工程->Qt Gui 应用->下一步,选上Embedded Linux,在详情里把x11的去掉(x11是PC上的),如下图。![](http://wuyuans.com/wp-content/uploads/2012/11/Hello_Qt.jpg)
后面的保持默认就行了。完成后打开界面文件,添加一个Hello Qt的Label,构建->运行。
![](http://wuyuans.com/wp-content/uploads/2012/11/Hello_Qt_x11.jpg)
在左下角切换到Embedded Linux版本,构建,复制编译好的Hello_Qt文件到开发板,运行./Hello_Qt出错:
QWSSocket::connectToLocalFile could not connect:: Connection refused
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the “-qws” command-line option.
按照提示添加-qws再次运行。
至此,Qt移植全部完成了。
作者:wuyuan
本文来自Wuyuan's Blog 转载请注明,谢谢!
文章地址: http://wuyuans.com/2012/11/qt4-8-3-transplant/
相关文章推荐
- QT 4.8 静态库编译方法
- Qt 内存管理机制
- Qt核心剖析: moc
- Qt核心剖析:信息隐藏(3)
- Qt核心剖析:信息隐藏(2)
- Qt核心剖析:信息隐藏(1)
- QT控件之状态栏
- QTP录制不了脚本常见问题解决方法
- Qt中PRO文件写法的详细介绍,很有用,很重要!
- Qt创建和使用动态链接库
- QT工程pro设置实践(with QtCreator)----非弄的像VS一样才顺手?
- qte for arm的编译过程
- QT pro工程文件介绍
- Qt之打包发布(NSIS详解)
- Qt开发:设置QMAKESPEC,生成不同平台的makefile
- QT_opengl_gluPerspective没有定义的处理方法
- 使用ARM开发详细步骤/关于QT/E安装,编译,以及执行
- Windows下Qt驱动MySQL数据库
- Qt WebKit 学习的说明
- 初学QTP系列视频教程