tslib1.4与Qt4.8.6的交叉编译与移植
最近开始正式接触QT开发,网上看了些移植教程都写的有点乱,博客园的emouse思·睿有一篇写的很好的文章,下面是文章的链接
http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html
我结合自己编译移植过程中遇到的问题重新整理下,写下这篇博客,大部分跟上面的一样,但也有些原帖没有的东西,算是一个总结。
就像上面那位老兄说的“Linux的东西搞起来麻烦的地方就在于太杂、太散”,这个我十分同意,有时候少做了那么一个步骤,后面就会出错,到网上搜半天才能解决。这就是所谓的蛋疼吧。
QT个各版本之间是存在差异的,qt-creator和qt-library尽量用最新的吧。
先大致说一下整个过程:
首先,在PC上交叉编译tslib和Qt(交叉编译是为了生成在开发板上能用的文件),然后将生成文件下载或拷到开发板上,我是用SD卡拷的。然后将开发板的环境变量设置好,移植就算成功了,大概过程就是这样。
下面正式开始:
软件平台
Linux:Ubuntu 12.04(32位,尽量用32位的,不然还得安装32位的库文件。)
qt-library:4.8.6
qt-creator:5.3.0
交叉编译工具链:arm-linux-gcc (version 4.4.6)
tslib编译与安装
tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先编译安装tslib,这样在后面编译Qt的时候才能打包编译进去。
准备工作:安装以下三个软件(原帖中autoconf无需安装,另外需安装libtool)
- sudo apt-get install automake
- sudo apt-get install autogen
- sudo apt-get install libtool
安装完上面的3个软件以后,将下载的tarlib-1.4源码解压编译安装
- # tar -zxvf tslib-1.4.tar.gz
- # cd tslib
- # ./autogen.sh
- #./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/usr/local/tslib
# make- # make install
编译过程中,有一个问题,
- #cd tests/
- #vi ts_calibrate
修改如下
- if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
- cal_fd = open (calfile, O_CREAT | O_RDWR, );
- } else {
- cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, );
- }
tslib的开发板移植与测试
将tslib文件夹整个拷到开发板/usr/local/目录下,然后修改ts.conf文件
下面是ts.conf文件的第一行与第二行
- # Uncomment if you wish to use the linux input layer event interface
- # module_raw input
去掉# module_raw input前面的注释,一定要注意中间的空格也去掉,module顶格。
最后添加环境变量,通过超级终端在开发板系统中添加环境变量,可以在开发板文件系统的/etc/profile文件里添加,也可以直接添加。(若修改/etc/profile,要立即使这些变量生效,还需要修改完后输入命令source /etc/profile)
- export set TSLIB_FBDEVICE=/dev/fb0
export set TSLIB_TSDEVICE=/dev/event3
export set TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
- 说明:
- TSLIB_TSDEVICE //触摸屏设备文件名,这个需要选对
TSLIB_CALIBFILE //校准的数据文件,由ts_calibrate校准程序生成。- SLIB_CONFFILE //配置文件名。
- TSLIB_PLUGINDIR //插件目录
- TSLIB_CONSOLEDEVICE //控制台设备文件名
- TSLIB_FBDEVICE //设备名
- 以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发板上的/dev目录下的设备节点相对应。
最后运行测验程序
ts_calibrate 进行校验 ts_test 进行测试
测试结果如下图所示:(这里就用他的图了,懒得拍)
QT 的交叉编译与安装
首先配置,同样是通过运行./configure来生成Makefile,由于配置项较多,所以把它写成一个脚本,如下
- #!/bin/sh
- ./configure \
- -opensource \
- -confirm-license \
- -release -shared \
- -embedded arm \
- -xplatform qws/linux-arm-g++ \
- -depths 16,18,24,32 \
- -fast \
- -optimized-qmake \
- -pch \
- -qt-sql-sqlite \
- -qt-libjpeg \
- -qt-zlib \
- -qt-libpng \
- -qt-freetype \
- -little-endian -host-little-endian \
- -no-qt3support \
- -no-libtiff -no-libmng \
- -no-opengl \
- -no-mmx -no-sse -no-sse2 \
- -no-3dnow \
- -no-openssl \
- -no-webkit \
- -no-qvfb \
- -no-phonon \
- -no-nis \
- -no-opengl \
- -no-cups \
- -no-glib \
- -no-xcursor -no-xfixes -no-xrandr -no-xrender \
- -no-separate-debug-info \
- -nomake examples -nomake tools -nomake docs \
- -qt-mouse-tslib \
- -I/usr/local/tslib/include \
- -L/usr/local/tslib/lib
- exit
上面的主要参数含义说明如下:
-embedded arm: 表示将编译针对 arm 平台的 embedded 版本;
-xplatform qws/linux-arm-g++: 表示使用 arm-linux 交叉编译器进行编译;
-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;
运行脚本
- #chmod +x autoconfig
- #./autoconfig
成功后会出现如下信息
- Qt is now configured for building. Just run 'make'.
- Once everything is built, you must run 'make install'.
- Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.8.4-arm
- To reconfigure, run 'make confclean' and 'configure'.
接下来执行make进行编译
编译完后执行make install 进行安装。
可以在文件夹/usr/local/Trolltech/下看到刚刚编译好的Qt文件夹。
移植到开发板
将编译的文件夹,PC中的/usr/local/Trolltech/Qt-4.8.6/,拷到开发板的/usr/local/目录下,我是用SD卡拷的。
设置环境变量:
- 我直接修改profile文件
- #vi /etc/profile
在最后加入以下内容
- export set QTDIR=/usr/local/Qt-4.8.6 #目录名要与拷贝的Qt文件夹名一致
export set LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export set PATH=$QTDIR/bin:$PATH
export set MANPATH=$QTDIR/man:$MANPATH
export set QT_QWS_FONTDIR=/usr/local/Qt-4.8.6/lib/fonts
export set QWS_MOUSE_PROTO=tslib:/dev/event3 #重要
立即使用变量
- #source /etc/profile
到此为止,QT的移植算是成功了
可以用Qt自带的示例程序来测试一下,
- # cd /usr/local/Qt-4.8./demos/
此文件夹下有很多示例程序,随便选一个运行。
例如
- cd affine/
- ./affine -qws
必须要加参数-qws
tslib1.4与Qt4.8.6的交叉编译与移植的更多相关文章
- [转载]tslib1.4与Qt4.8.6的交叉编译与移植
原文:http://www.cnblogs.com/Jasonsblog/p/3757985.html http://blog.csdn.net/sno_guo/article/details/168 ...
- Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》
本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义 ...
- Windows7下移植Qt4.8.4项目到QT5.2上时遇到的一些问题
最近在Windows7下将Qt4.8.4+MSVC2008的项目移植到QT5.2下时,遇到了一些小问题: 问题一:错误:C1083: 无法打开包括文件:"QApplication&q ...
- QT开发实战一:图片显示
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 QT版本:Qt-4.7.3 Tslib版本:tslib-1 ...
- Zynq7000开发系列-7(在Zybo上运行Linaro桌面系统)
目标板:Zybo(7Z010) 主机操作系统:Ubuntu 14.04.5 LTS 64bit 交叉编译链: arm-xilinx-linux-gnueabi- [gcc version ...
- 高效c/c++日志工具zlog使用介绍
1. zlog简介 zlog的资料网上很多,这里不在详细说明:zlog是用c写的一个日志工具,非常小,而且高效,可以同时向控制台和文件中输出,日志接口与printf使用基本一样,所以使用起来很简单. ...
- qt4.7.0 交叉编译环境搭建经验总结
一.前期软件准备: 1 .虚拟机fedora9.到fedora官网下载,地址 http://fedoraproject.org/ 版本推荐使用fedora9,在vm内安装,并且不安装vmware ...
- 嵌入式V3s交叉编译 tslib和QT4.8.7,并使用Qt Creator编译项目
本文主参考:http://zero.lichee.pro/%E5%BA%94%E7%94%A8/QT_index.html 环境 Ubuntu16 64位 arm-linux-gnueabihf ve ...
- Ubuntu14.04配置gcc4.4.4+Qt4.8.4交叉编译环境
安装32位程序运行支持 sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 lib32bz2-1.0 可能报错: lib32stdc++6 ...
随机推荐
- JavaScript 设计模式之工厂模式
- 一个Demo学完Android中所有的服务(转)
说明:这个例子实现了Android中常见的许多服务,下面是实现的截图 接下来,以源代码的方式分析这个例子 1.MainActivity--主界面 这个类主要是实现用户所看到的这个Activity, ...
- paper 99:CV界的明星人物经典介绍
CV人物1:Jianbo Shi史建波毕业于UC Berkeley,导师是Jitendra Malik.其最有影响力的研究成果:图像分割.其于2000年在PAMI上多人合作发表”Nor ...
- Redhat 7使用CentOS 7的Yum网络源
由于redhat 的更新包只对注册的用户生效,所以需要自己手动更改成CentOS 的更新包,CentOS几乎和redhat是一样的,所以无需担心软件包是否可安装,安装之后是否有问题,另外CentOS公 ...
- [转]ASP.NET MVC Json()处理大数据异常解决方法 json maxjsonlength
本文转自:http://blog.csdn.net/blacksource/article/details/18797055 先对项目做个简单介绍: 整个项目采用微软的ASP.NET MVC3进行开发 ...
- em
macro jumptocaller(){ JumpToLocation(GetSymbolLocation((GetCurSymbol ())))}
- MVC5 + EF6 完整入门教程三
期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型,将之前的示例添加数据库查询验证功能. 文章提纲 概述 & ...
- 常用HTML正则表达式
1.只能输入数字和英文的: <input onkeyup="value=value.replace(/[\W]/g,'') " > 2.只能输入数字的: <inp ...
- sql注入过滤的公共方法
/// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...
- [Linux] VIM 常用快捷键2
如何使用MacVim 1.在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但 ...