下载

首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载。考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么地方复制一份,否则需要等待较长时间才能下载下来。我是在家里下载这个文件的,所以开始编译已经是第二天了。考虑提升员工效率的话,需要预先预备好这些下载文件,或者增加接入带宽。

解压

第一步下载的文件是一个tar包,所以需要解压,通常解压需要在unix/Linux环境下进行,如果只是看代码,windows环境下的msys和cygwin环境也是可以顺利进行解压的,但直接不推荐直接用winrar解压,有时会发现某些文件重名了,会一时不知道该用哪个替换哪个。解压命令是tar -xvzf qt-everywhere-opensource-4.7.2.tar.gz。考虑到当前的PC速度普遍不差,很快解压就会完成了,如果解压超过5分钟没有完成,强烈建议考虑升级机器或检查虚拟机配置是否有问题,因为编译比解压的耗时要多许多倍。

编译

目标平台是一个MIPS架构的平台,我采用如下的configure

cd qt-everywehere-opensource-src-4.7.2
./configure -embedded mips -xplatform qws/linux-mips-g++ -little-endian -qt-gfx-linuxfb -no-opengl -no-multimedia -no-qt3support -no-script no-scripttools -no-audio-backend -no-openssl -no-sql-sqlite -no-largefile

configure开始时会交互确认采用opensource版本license过程,其后过程不需要干预。这个configure过程比较长,看起来configure编译产生了一些工具,预备后继工作的进行。

由于MIPS架构在Qt移植中属于2nd tier,所以支持的并不太好,所以需要在configure结束后,手动进行一些修改。修改的文件在mkspecs/qws/linux-mips-g++/目录下,名为qmake.conf,打开这个文件,发现一些问题,主要是编译器名称和CFLAGS,我使用的编译器配置如下:
QMAKE_CC = mips-linux-gnu-gcc
QMAKE_CXX = mips-linux-gnu-g++
QMAKE_CFLAGS += -EL -mips32r2 -msoft-float
QMAKE_CXXFLAGS += -EL -mips32r2 -msoft-float
QMAKE_LINK = mips-linux-gnu-g++ -EL -mips32r2 -msoft-float -lrt
QMAKE_LINK_SHLIB = mips-linux-gnu-g++ -EL -mips32r2 -msoft-float -lrt

QMAKE_AR = mips-linux-gnu-ar cqs
QMAKE_OBJCOPY = mips-linux-gnu-objcopy
QMAKE_STRIP = mips-linux-gnu-strip

编译相当耗时,(命令是qmake,)特别是编译时包含了demo和sample部分。不过考虑到需要用这些demo和sample在目标平台上跑出效果来,就继续等待吧。既然需要把Qt在嵌入式平台上运行,编译的等待期恰好可以读读文档什么的。在一台E5200的PC的ubuntu虚拟机上编译,耗时非常之久,我违法了公司规定,昨晚下班时让它继续编译,今天早晨来检查,看到编译已经完成了。

编译后生成了一堆的文件,包括很多.so库文件,将这些lib下的文件复制到目标平台上,Qt就基本上可以开始运行了。

问题

1.缺少libQtxxxx.so
解答:在LD_LIBRARY_PATH中增加libQtxxxx所在路径。

2.Cannot create semaphore on ‘/tmp/qtembedd…
解答:请检查kernel编译时是否enable了system V IPC。Qt窗口系统依赖于此IPC方式。

3.缺少libstdc++.so, libz.so等
解答:请将交叉编译器提供的目标平台动态库复制到目标平台上,并在LD_LIBRARY_PATH中描述。

4.framebuffer sample不工作
解答:检查平台视频输出接线,检查framebuffer驱动是否正常初始化。

5.鼠标不work
解答:export QWS_MOUSE_PROTO=IntelliMouse:/dev/mouse0

6.browser无法访问网页
解答:
-检查平台的ip地址ifconfig eth0
-检查平台的路由表route add default gw
-检查平台的dns设置/etc/resolv.conf,nameserver 8.8.8.8

至此,Qt版本已可以在MIPS Linux上运行,用它的browser demo也可以工作,只是性能不佳,下面应该属于优化工作了,暂不在本文描述范围。

总结

Qt平台的可移植性还是很不错的,在遇到的问题中,最难解的是问题2,即所谓Cannot create semaphore的问题,从今天上午遇到开始,不停的搜索Google,但是很少有文章说到点子上,许多论坛上有人提问,时间范围从2005年到2011年,但是很少看到最终解决的方法,所以在此文中稍作强调。

另外,browser的性能不敢恭维,qt 4.7.2是今年三月发布的,编译出来的性能甚至不如同平台上运行Android浏览器的效果,有些让人觉得疑惑,评测时,两者均没有打开2D加速。

https://d4linux.wordpress.com/2011/03/29/see_qt_run_on_mips_linux/

让Qt在MIPS Linux上运行 good的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  2. 不装mono,你的.NET程序照样可以在Linux上运行!

    让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序. 这种运行.net程序的办法有两个弱点,一个是需要客户机安装 ...

  3. Wine——在Linux上运行Windows软件

    官网:https://www.winehq.org/ 参考: wikipedia 教你使用Wine在Linux上运行Windows软件 如何安装和使用Wine,以便在Linux上运行Windows应用 ...

  4. 在Linux上运行C#

    众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...

  5. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  6. Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台

    转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 本篇文章操作系统信息 Linux:ubu ...

  7. jmeter操作数据库,分布式,在Linux上运行

    jmeter操作数据库: 1.在测试计划中导入数据库jar包 2.添加链接数据库信息 3.mysql:jdc:mysql://192.168.1.116:3307/bugfree?allowMulti ...

  8. .netcore 在linux 上运行 Helllo World 例子

    要想在linux上运行netcore ,需要在linux 安装netcore SKD 下面分两步完成, 首先我的操作系统是 Ubuntu 14.04 ,不同版本可以参考 官网给出的连接 https:/ ...

  9. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

随机推荐

  1. Java对象基础的一些小问题

    1 权限修饰符public protected private default..访问权限修饰符   public protected default private 同类 T T T T 同包 T ...

  2. Docker for Linux 安装

    原文:Docker for Linux 安装 前言: 环境:centos7.5 64 位 正文: Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker ...

  3. 【BZOJ 1033】 [ZJOI2008]杀蚂蚁antbuster(判断线段是否和圆相交)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1033 [题意] https://www.zybuluo.com/Jerusalem/n ...

  4. Alien Widgets加速了绘制、减少了闪烁。但通过设置,还可以使用Native Widget

    QWidget::createWindowContainer和QWindow::setParentNative Widgets vs Alien Widgets http://doc.qt.io/qt ...

  5. 我是怎么做App token认证的

    使用Token来做身份认证在目前的移动客户端上非常流行,Token这个概念来源于OAuth认证,主要是在服务端实现.关于相关的原理,同学们自行百度.在这里,我简单介绍一下我是怎么具体实现的,重点描述t ...

  6. CP_ACP : CP_OEMCP

    // filesystem windows_file_codecvt.cpp -----------------------------------------// // Copyright Bema ...

  7. Emoji:搜索将与您找到表情符号背后的故事

    眼下.秉已经开始支持emoji搜索,这意味着,你可以插入或粘贴系列emoji表情,让我们的爱.微笑.食品等..些表情随意组合,必应总会带给你非常多有趣的但却没有不论什么实际用途的搜索结果. 这是一项非 ...

  8. 右键计算机->属性->高级系统设置->高级->环境变量,添加环境变量(推荐)

    (1)右键计算机->属性->高级系统设置->高级->环境变量,添加环境变量(推荐) QTDIR:D:\Software\Qt\Qt5.2.0\5.2.0\msvc2010_op ...

  9. 基于高德地图的描点操作,监听地图缩放,展示合理数量的marker

    原文:基于高德地图的描点操作,监听地图缩放,展示合理数量的marker 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lx583274568/art ...

  10. C++第三方日志库Pantheios

    C++第三方日志库Pantheios Kagula 2012-1-11 简介 在项目实践中发现一个好的日志记录非常重要,你需要借助Logging才能跟踪软件中的错误.所以这里研究下第三方C++库Pan ...