文档章节

Qt4.8.3移植总结

DB_Terrill
 DB_Terrill
发布于 2015/04/11 20:55
字数 1504
阅读 36
收藏 0
点赞 0
评论 0

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了,汗。。。这个工具比较小,配置一下后直接编译就行了。
  • tar -xvjf tslib-1.0.tar.bz2
  • cd tslib-1.0
  • ./autogen.sh
  • ./configure --prefix=/opt/tslib-1.0 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
  • make
  • make install
  • prefix后面是安装目录,自己随便定义,装好后修改/opt/tslib-1.0/etc/ts.conf,去掉module_raw input 前面的#号,然后把/opt/tslib-1.0里的文件都拷入开发板,比如我放在了/usr/local里。再配置开发板的环境变量,让tslib能正常工作。

  • export set TSLIB_FBDEVICE=/dev/fb0
  • export set TSLIB_TSDEVICE=/dev/event4
  • export set TSLIB_CONFFILE=/usr/local/etc/ts.conf
  • export set TSLIB_CALIBFILE=/etc/pointercal
  • export set TSLIB_PLUGINDIR=/usr/local/lib/ts
  • 运行/usr/local/bin中的ts_calibrate进行校准,成功的话会出现界面,并让你点击十字符号,完成后会生成/etc/pointercal文件,这是触摸屏的校准配置文件。 遇到的问题:

    1.在autogen时出错,提示

     

    ./autogen.sh: 4: autoreconf: not found

     

    这是因为系统没有安装automake,装上就行了。

  • aptitude install autoconf automake libtool
  • 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的第三个参数:

  • if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
  • cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
  • } else {
  • cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);
  • }
  • 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。
  • tar -xvzf qt-everywhere-opensource-src-4.8.3.tar.gz
  • cd qt-everywhere-opensource-src-4.8.3
  • ./configure -prefix /opt/qt-4.8.3-x11
  • make
  • make install
  • 因为库比较大,要编译好一段时间,完成后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。

  • # QMAKE_LFLAGS+=-fuse-ld=gold
  • 2.2.安装embedded版Qt

    源代码是一样的,重新配置就行了。

  • ./configure -prefix /opt/qt-4.8.3-arm -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.0/include -L/opt/tslib-1.0/lib
  • make
  • make install
  • 配置选项要根据自己的硬件选取,这样编译出来的库文件才会比较小。装好后把目录下的imports、lib、mkspecs 、plugin文件夹拷到开发板上的/opt/Qt目录下,目录随便,和环境变量里的一致就行。然后配置开发板的环境变量,让他能找到Qt。

  • export set QTDIR=/opt/Qt
  • export set QPEDIR=/opt/Qt
  • export set LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
  • export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
  • export set QWS_SIZE=800x480
  • export set QWS_DISPLAY="LinuxFb:mmWidth80:mmHeight120:0"
  • export set QWS_DISPLAY="LinuxFB:/dev/fb0"
  • export set QT_PLUGIN_PATH=$QTDIR/plugins/
  • export set QWS_KEYBOARD="TTY:/dev/tty1"
  • export set QWS_MOUSE_PROTO="TSLIB:/dev/event4"
  • export PATH=$QTDIR/bin:$PATH
  • 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,运行安装即可。

  • ./qt-creator-linux-x86-opensource-2.6.0.bin
  • 装好后配置qmake,进入工具->选项->构建和运行->Qt 版本,添加上面装好的X11和arm版的qmake,qmake在各自的bin文件夹里,结果如下图。Qt_Version添加交叉编译工具链GCCE。Qt_gcc确定,至此配置完成,接下来我们来测试一下。

    4.Hello Qt

    新建文件或工程->Qt Gui 应用->下一步,选上Embedded Linux,在详情里把x11的去掉(x11是PC上的),如下图。 Hello_Qt 后面的保持默认就行了。完成后打开界面文件,添加一个Hello Qt的Label,构建->运行。 Hello_Qt_x11 在左下角切换到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再次运行。

  • ./Hello_Qt -qws
  • 成功,查了一下,原来Qt的运行需要有一个Qt的服务进程,添加-qws后就是把当前Qt程序当作server了。 至此,Qt移植全部完成了。

    http://doc.qt.io/qt-5/embedded-linux.html

    本文转载自:http://wuyuans.com/2012/11/qt4-8-3-transplant/#toc-5

    共有 人打赏支持
    DB_Terrill
    粉丝 24
    博文 120
    码字总数 18622
    作品 0
    大连
    高级程序员
    qt 源码编译,qt creator提示没有qmlviewer

    下载qt4.8.3的源码编译安装后!在qt creator中显示没有qmlviewer,是怎么回事!项目不能运行! 并且在CMD中手动编译是,链接报错,什么情况呀!

    wj2699 ⋅ 2012/11/27 ⋅ 4

    关于weiphp 2.0 1202 的SAE移植有无人分享移植经验

    刚刚接触了weiphp 觉得还可以,还好玩。于是开始了像discuz x2.5的sae移植,话说sae的移植好难搞,最主要是storage的修改才是重点而且难点,其他还可以吧!至于如果有需要可以叫我分享代码或...

    wwfan ⋅ 2015/07/10 ⋅ 3

    [资料分享]迅为iTOP4412开发板-SDIO WiFi移植文档

    本文转自迅为:http://www.topeetboard.com 概述 近期需要把WiFi无线网络功能移植到iTOP-4412 开发平台,查阅了相关资料,经过一段时间的研究、调试,终于成功的将WiFi功能移植到了开发板上面...

    topeet ⋅ 2015/07/28 ⋅ 0

    【分享】迅为iTOP4412-Android4.4 HDMI 移植文档

    本文转自迅为电子:http://www.topeetboard.com 近期需要把Android4.4 KitKat 的HDMI 高清输出功能移植到iTOP-4412 开发平台,查阅了相关资料,经过一段时间的研究、调试,终于成功输出1080P...

    topeet ⋅ 2015/07/14 ⋅ 0

    SylixOS中间件移植方法总结

    1 概述 1.1“中间件”概念 中间件软件是一种计算机软件,为应用软件提供操作系统所不能提供的服务。 中间件处于操作系统软件与用户的应用软件的中间层,为上层的应用软件提供运行与开发的环境...

    Jackstraw瑞 ⋅ 2017/02/15 ⋅ 0

    深圳Qt5培训会

    首先,抱歉Digia,我忘了会议的具体名称了,所以就这样子吧。 会议内容还是介绍Qt5和里面的一些机制,新东西等等。大部分内容在之前通过网络和去年的Qt开发者大会都有了一些了解。Sorry Mar...

    zhgn22 ⋅ 2014/05/08 ⋅ 0

    %s引起的持久战

    昨天跟用同事移植过来的SDK库时,调用它接口后,打印其返回值,当时不知怎么搞的,竟然用了如下类似代码: printf("sdk_interface before ");int re = sdk_interface( ... );printf("sdk_in...

    thinkerfans ⋅ 2013/12/08 ⋅ 1

    从A33移植ICM20608D谈Android sensors移植

    在A33上移植ICM20608D,历时3.5天。回顾该Sneosr移植、调试历程,没有产生过多障碍及意外。可以说,一切按设想中的样子演进。16日下午完成了linux driver及android hal的移植,确认sensor工作...

    ka布 ⋅ 2016/08/27 ⋅ 0

    一位淋巴癌患者的妻子的话

    下面是我在译言上看到的一位淋巴癌患者的妻子的留言,全文转贴。 ===================== 病人已于6月22日晚辞世。与他相伴4年来,始终清楚他的辛苦与不易。有时候,离世未必不是一种解脱。他...

    阮一峰 ⋅ 2007/07/22 ⋅ 0

    关于FreeRTOS移植到STM32F103上的步骤以及注意事项

    因为最近比较有时间,而且发现自己对于STM上可以跑的操作系统相对陌生。所以选择几个操作系统进行移植和玩几个DEMO理解一下。虽然理解的不是很深入,但是如果项目需要的话,只是移植,进行多...

    jutun5887 ⋅ 05/05 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    个人博客的运营模式能否学习TMALL天猫质量为上?

    心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

    原创小博客 ⋅ 今天 ⋅ 0

    JavaScript零基础入门——(十一)JavaScript的DOM操作

    JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

    JandenMa ⋅ 今天 ⋅ 0

    volatile和synchronized的区别

    volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

    MarinJ_Shao ⋅ 今天 ⋅ 0

    深入分析Kubernetes Critical Pod(一)

    Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

    WaltonWang ⋅ 今天 ⋅ 0

    原子性 - synchronized关键词

    原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

    dotleo ⋅ 今天 ⋅ 0

    【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

    14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

    lgsxp ⋅ 今天 ⋅ 0

    JeeSite 4.0 功能权限管理基础(Shiro)

    Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

    ThinkGem ⋅ 昨天 ⋅ 0

    python f-string 字符串格式化

    主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

    阿豪boy ⋅ 昨天 ⋅ 0

    Python实现自动登录站点

    如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

    blackfoxya ⋅ 昨天 ⋅ 0

    线性回归原理和实现基本认识

    一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

    wangxuwei ⋅ 昨天 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    返回顶部
    顶部