一、宿主机环境搭建:

编译需要x11库的支持,在Ubuntu下安装命令:

sudo apt-get install libx11-dev libxext-dev libxtst-dev

二、下载源码包:qt-everywhere-opensource-src-4.7.0.tar.gz

三、解压源码包,查看Qt源码中是否有适合我们编译平台的配置文件,进入到源码目录下的qws目录下。ls 看一下,有一个适合我们的配置,就是linux-arm-gnueabi-g++ ,如果没有,就自己建一个目录,然后从别的目录下拷贝这两个文件

qmake.conf

qplatformdefs.h

进入到linux-arm-gnueabi-g++目录,看一下qmake.conf 的内容,如下:

QMAKE_CC                = arm-none-linux-gnueabi-gcc

QMAKE_CXX               = arm-none-linux-gnueabi-g++

QMAKE_LINK              = arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

# modifications to linux.conf

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_STRIP             = arm-none-linux-gnueabi-strip

正确,我们就使用这个配置,如果不正确,可以改成自己的编译器的名字。

四、配置:

可以运行./configure --help 查看配置帮助

配置命令:

./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -qt-libtiff -qt-libmng -no-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -qt-mouse-linuxinput -no-neon -qt-libjpeg -qt-libpng

可以将配置编写进脚本文件。

五、执行make –j4

-j参数指定编译时的线程数,make –j不限制线程数。

六、执行make install。

默认安装路径为:/usr/local/Trolltech/QtEmbedded-4.7.0-arm

七、配置环境变量(vim /etc/profile):

#!/bin/sh

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm

export QMAKEDIR=$QTDIR/qmake

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QMAKEDIR/bin:$QTDIR/bin:/opt/arm-linux-gcc/bin:$PATH

export QMAKESPEC=qws/linux-arm-g++

使环境变量有效的方法:1、注销,重新登录。2、source /etc/profile(只在本次终端中有效)

测试搭建环境:qmake –v

QMake version 2.01a

Using Qt version 4.7.0 in /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib

出现上述文字则编译成功。

八、交叉编译。

编写Hello World程序,保存为hello.cpp。

#include  <QApplication>

#include  <QLabel>

int  main(int  argc,  char  *argv[]) {

QApplication  app(argc,  argv);

QLabel  *label   =  new  QLabel("Hello Qt!");

label->show();

return  app.exec();

}

执行如下命令:

1、  qmake –project(生成工程文件)

2、  qmake (生成Makefile)

3、  make (编译工程)

九、开发板环境搭建及测试运行

1、在开发板上新建目录/usr/local/Trolltech/QtEmbedded-4.7.0-arm,再把Ubuntu相同目录下的lib和plugins文件夹拷贝到该目录下。

2、将libstdc++.so.6.0.9 和libz.so.1.2.3(这两个文件在交叉编译器的lib目录中) 传送到开发板的 /usr/local/lib 目录下。(在这个步骤中,有的资料拷贝librt,具体操作命令如:#cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/libc/lib/librt-2.11.1.so /root/rootfs/lib

#cd /root/rootfs/lib

#chmod 777 librt-2.11.1.so

#ln -s librt-2.11.1.so librt.so.1)

3、设置开发板环境变量:

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib:/usr/local/lib

4、测试运行:第八步中生成的文件下载到开发板中,执行命令:./hello –qws测试程序。

附:开发板环境详细配置:

export QWS_DISPLAY=:1

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.0-arm

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO="LinuxInput:/dev/touchscreen"

export QT_QWS_FONFDIR=$QTDIR/lib/fonts/

export QT_PLUGIN_PATH=$QTDIR/plugins

遇到问题总结:

1、  开发板上的程序不能显示中文汉字,可能是环境变量没有设置QT_QWS_FONFDIR(猜测,没有测试)。

2、  在编译有数据库的程序时出错,说没有发现QsqlDatabase之类的,在生成的*.pro文件中加入QT += sql编译通过了。之前,还怀疑是在配置编译Qt时没有添加sql功能,还在配置中加入了-qt-sql-sqlite语句重新编译了Qt。。。

交叉编译安装ARM平台上的Qt的更多相关文章

  1. Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg

    1 准备工作 (1)libmp3lame库 下载:    wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz 解压 编译:./con ...

  2. ARM 平台上的Linux系统启动流程

    开始学习嵌入式开发就一直在使用Linux系统作为学习的平台,到现在无论是PC机还是ARM开发板都已经能顺利地跑起了Linux系统,但是对Linux 的启动流程还是不甚了解.于是开始各种百度谷歌,当然看 ...

  3. Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法

    一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...

  4. 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法

    原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...

  5. QT5.7交叉编译安装到arm(好多系列文章)

    以下采用的系统为ubuntu16.04,开发板为迅为iTOP4412,4.3寸屏. 下载qt5.7源码qt-everywhere-opensource-src-5.7.0.tar.xz http:// ...

  6. linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本

    最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...

  7. linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本 以及x64上编译qt

    最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...

  8. Linux平台上DPDK入门指南

    1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...

  9. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

随机推荐

  1. WDCP控制面板的常用liunx命令集

    WDCP是在linux下的一款常用的服务器可视化管理面板,是新手使用linux搭建网站的福音.本文不过多的介绍WDCP是什么,如果需要了解的话,可以至WDCP官方介绍页面查看. 今天博主准备查看网站系 ...

  2. 三星手机照相机出现了故障,htc无法连接无线网

    1 重启 2 若还不行,把内存卡,电池拿掉, 也可下载一个相机应用

  3. HTML5 中 div section article 的区别

    刚刚开始接触 HTML5 时,对它的标签很不适应,甚至一度有点反感.尤其是对 div.section.article 这几个标签,实在弄不清楚应该使用在什么场合下. div HTML Spec: Th ...

  4. 分享到QQ空间、新浪微博、腾讯微博的代码!(收藏)

    QQ空间分享代码如下:    <a href="javascript:void(0);" onclick="window.open('http://sns.qzon ...

  5. C++ 继承和包含的区别?

    在<代码大全>这本书的第六章中提到了有关包含与继承的一些原则,我摘取如下: 一.包含("has a") 包含表示一个类含有一个基本数据元素或对象.包含是面向对象编程的主 ...

  6. 使用NSTimer实现倒计时-备

    今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的IphoneSDK升级到3.1了,以前使用的是2.2.1,在2.2 ...

  7. C#调用WebService服务(动态调用)

    原文:C#调用WebService服务(动态调用) 1 创建WebService using System; using System.Web.Services; namespace WebServi ...

  8. NOI2011 兔兔与蛋蛋游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2437 这道题真是极好的. 75分做法: 搜索. 出题人真的挺良心的,前15个数据点的范围都很小,可以 ...

  9. NOI2011 NOI嘉年华

    http://www.lydsy.com/JudgeOnline/problem.php?id=2436 首先离散化,离散化后时间范围为[1,cnt]. 求出H[i][j],表示时间范围在[i,j]的 ...

  10. Jquery使用tbody编辑功能实现table输入计算功能

    实例:编写一个输入计算(被减数-减数=差). HTML: <body> <table> <thead> <tr> <td >被减数</ ...