下载

首先下载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. 【t087】公共汽车

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 路人丁成为了一名新公交车司机,每个司机都有一张牌子,牌子的正面写了拥有这个牌子的司机开的线路号,另外一 ...

  2. Visual Studio for Mac

    Visual Studio for Mac 初体验   你喜爱的 IDE,现在可用于 Mac 来自:https://www.visualstudio.com/zh-hans/vs/visual-stu ...

  3. 到底有多少种智能指针(smart pointer)

    最近Qt的blog总结了到底有多少种smart pointer, 下面是一个简要的介绍: 1.   QPointer :提供对指针的保护,当一个指针被删除以后,再使用不会造成野指针或者指针溢出.比如 ...

  4. Android Studio运行main方法

    这样想做一些测试就很简单了 实现步骤如下: 1.当前项目右键->new->Module->Java Library 2.修改你创建javaLib的build.gradle文件 改为( ...

  5. 报错:Unsupported major.minor version 52.0 (jar包对不同JDK版本的兼容性问题:)

    Unsupported major.minor version 52.0 这类错误是因为Java版本不一致造成的,在高版本的JDK(1.8)环境中编译JAR包,然后JAR在低版本的JVM(1.6)中运 ...

  6. VS版本 与 .NET版本以及C#版本之间的关系

    版本 .NET Framework版本 Visual Studio版本 发布日期 特性 C# 1.0 .NET Framework 1.0 Visual Studio .NET 2002 2002.1 ...

  7. windows 7 64位下配置mysql64位免安装版

    1.官方网站下载mysql-noinstall-5.1.51-winx64.zip 2.解压到E:\Program Files\MySQL.(路径自己指定) 3.在E:\Program Files\M ...

  8. Coremicro Reconfigurable Embedded Smart Sensor Node

    A Coremicro Reconfigurable Embedded Smart Sensor Node has the capability of hosting intelligent algo ...

  9. [C 语言]判断某文件是文件夹还是文件

    #include <sys/stat.h> #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]){ char* fil ...

  10. 图形的认识(curve,surface,hypersurface)

    平滑函数(smooth function): curve:曲线: 二维平面: surface:曲面: 三维空间: hypersurface:超曲面: 更高维度: 1. surface 是对平面的泛化, ...