一.概述:

     我们知道QTcreator。这仅仅是个IDE,他包含了一个编译器--qmake.这两者的关系与codeblocks和g++的关系一样,首先要明确这些。

     而我们在linux下搭建arm平台的QT编译环境,基本的是要使用适合arm的qmake。正如我们编译在arm上使用c++程序时要用arm-none-linux-gnueabi-g++一样。而qmake仅仅是我们使用的工具,自然不须要也不能换。所以我们仅仅要使用arm-none-linux-gnueabi-g++编译一个qmake就可以(主要是编译生成arm上适合使用库。qmake应该还是适合linux下使用的,否则也无法编译)。

二.环境:

    pc机:linux就可以,我用的是ubuntu。这些没什么影响

    arm:arm9。这个也没什么影响。仅仅是你的交叉编译器一定要相应你的arm平台

    交叉编译器:arm-none-linux-gnueabi-,编译器用适合自己的arm平台的。至于交叉编译器的使用,这里不做讲述了。

   QTcreator:QT4.8左右的,这个也无所谓。仅仅是配置略微不同,思路一样

    qmake:使用qt-everywhere-opensource-src-4.7.4.tar.gz生成。核心就是这一步。

三.准备

    1.安装交叉编译器,包含配置环境。arm-none-linux-gnueabi-g++可用应该就没有问题了,这里能够參考前面对交叉编译器安装的记录。

    2.下载qt--everywhere-opensource-src-4.7.4.tar.gz,百度搜吧。

    3.QTcreator安装,直接在ubuntusoftwarecenter安装就可以,自己网上下载适合版本号点击安装也可,非常easy。这里说明一下。你安装了QTcreator已经自带了qmake,它是编译linux(你自己的pc)平台程序的,你要用适合arm的qmake替换它,两者能够自己切换。

四.armqt库的编译生成

    1.解压。。

。

。。

。。

。。。。。

    2.进入qt-everywhere...........接下来有人说要改mkspecs/qws/linux-arm-g++/qmake.conf(当前文件夹下)。这是应为自己要用的交叉编译器是arm-none-linux-gnueabi-而不是

arm-linux-,事实上不须要,应为mkspecs/qws/下有linux-arm-gnueabi-g++能够相应我们要用的交叉编译器,我们使用它既可

   3.     ./configure -prefix /usr/local/qt-4.7.3-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-g++    -prefix代表你的安装文件夹,-embedded代表安装嵌入式版本号的。最后的-xplatform指定编译器,如上步描写叙述的一样。

    4.上步中会有几次提示。第一次问你开源还是*****,总之选o就能够了。过一段时间还会提示你,选择yes既可,假设没有这两步的话就是有问题,就不要浪费几个小时去make了,又一次来过吧。假设成功,他会提示你运行make运行make install,还会告诉你安装在哪个文件夹。

     5.make。几个小时才干够。

     6.make install ,这样就算完毕了。你会再安装文件夹看到有bin,include,lib灯这些文件夹,跟gcc的文件夹几乎相同,跟编译完boost的文件夹也几乎相同。事实上道理都是一样的。

      7.须要的话你要给你的qmake改个名字(你的电脑安装qtcreator的时候已经有个qmake了,这是电脑版的),如armqmake,这样你就能够配置环境变量了。能够在随意文件夹运行你的armqmake,我没有做这里,自己不须要。

 

到这里。事实上你就能够使用qmake了:

         hello.cpp源代码:
         #include <QApplication>
         #include <QDebug>
         int main(int argc,char *argv[]) 
        {
            qDebug("Hello, welcome to Qt world!");
            return 0;
         }
  
  顺序运行下面操作:
  @1. 运行:qmake -project hello1.cpp
        生成 hello1.pro 工程文件
  @2. 运行:qmake hello1.pro
        生成 Makefile 文件 
  @3. 运行:make
        生成 hello.o, hello 文件 

 

五.配置qtcreator,这是为了开发方便

假设你已经安装好creator了。上面工具栏tool->option->左边build&run->qtversion,加入你的arm版的qmake(armqmake)。

还是这里,选tool chains加入你的交叉编译器。

选unconfigured project,不同版本号可能不同,有个不是这个名字,可是作用一样。代表你要用哪个qmake相应哪个编译器(对,两个编译器,g++跟qmake,linuxpc相应pc的,arm相应arm的)。然后相应就可以,有时候可能toolchain找不到你刚配置的交叉编译器,你关了重开option就该出来了。

 

 六.链接文件配置

问题:

1.导入qmake的时候可能会报错。我的是报错了,个人认为应该都报错。

这须要进入mkspecs文件夹查看default指向哪里,正确的应该指向/qws/linux-arm-gnueabi-g++,(不清楚默认的是不是这个,我这里没有查看,由于出现上图的问题,我直接改了)。总之删除default,然后运行ln -s qws/linux-arm-gnueabi-g++ default就能够了。又一次配置qtcreator后发现正常了(option窗体要关闭再打开)。

七.常见编译问题总结

    1.

2011-10-29 15:58

error: main.o: Relocations in generic ELF (EM: 3)解决的方法

在编译arm版本号的qt程序时,出现错误error: main.o: Relocations in generic ELF (EM: 3)。由于開始我的程序是编译成了x86版的程序,然后我想编译到arm下运行,编译的时候出现了上述错误。

解决的方法:对工程clean一下,你再又一次编译应该就没错了。

2. undefined reference to 'QWSKeyboardHandler::

出现这个问题。是说这个类没找到,而你发现这个类的确是在头文件包含的,这可能是由于你的编译器还是用的linux版本号的,而这个类仅仅存在arm版本号。

解决的方法:qmakearm要配置对,另外也可能是上面问题的default有问题,更改就可以。

linux下arm平台Qt编译环境搭建与解析的更多相关文章

  1. iMX6 yocto平台QT交叉编译环境搭建

    转:https://blog.csdn.net/morixinguan/article/details/79351909 . /opt/fsl-imx-fb/4.9.11-1.0.0/environm ...

  2. Linux下Discuz!7.2 LAMP环境搭建

    linux下Discuz LAMP环境搭建 1.需要的源代码 httpd-2.2.15.tar.gz          mysql-5.1.44.tar.gz     php-5.3.2.tar.gz ...

  3. linux下nginx+php+mysql 自助环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++linux下nginx+php+mysql环境搭建+++++++++++++++++++++++++++++ ...

  4. Linux下配置APUE的编译环境

    APUE即Unix环境高级编程,本书中几乎所有的程序都包含一个apue.h的头文件,那如何配置这个apue.h呢? 1.我们可以在http://pan.baidu.com/s/1dDxmtbF中下载, ...

  5. Linux下JDK Tomcat MySQL基本环境搭建

    1. 安装JDK wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1 ...

  6. Linux下HBase和Maven的环境搭建

    Maven环境部署如下: maven下载并进行环变量配置 export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9export PATH=$MAVEN ...

  7. linux python 图形编程 qt开发环境搭建

    我的系统是 ubuntu14.04 我们使用的是python2.7,建议安装qt4+pyqt4+eric4 eric是pyqt的界面设计器的代码生成软件. 1.安装sip 这个是python和qt之间 ...

  8. Linux下从零开始学习Python之环境搭建

    我本人用的是Centos7.4版本,下载地址 archive.kernel.org/centos-vault/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708 ...

  9. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

随机推荐

  1. Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制

    readonly_table=False#默认表单不锁定 readonly_table=True#默认表单不锁定 # forms.py # ————————19PerfectCRM实现King_adm ...

  2. PHP实现微信小程序支付完整版,可以借鉴!

    本文实例为大家分享了php实现小程序支付的具体代码,供大家参考,具体内容如下 环境: tp3.2.3  + 小程序 微信支付功能开通 Step1:  下载PHP 支付SDK(下载地址)  放到Libr ...

  3. bzoj3064/洛谷P4314 CPU监控【线段树】

    好,长草博客被催更了[?] 我感觉这题完全可以当作线段树3 线段树2考加法和乘法标记的下放顺序,这道题更丧心病狂[?] 很多人可能跟我一样,刚看到这道题秒出思路:打一个当前最大值一个历史最大值不就完事 ...

  4. day37 08-Hibernate的反向工程

    反向工程:先创建表,创建好表之后,就是持久化类和映射文件可以不用你写,而且你的DAO它也可以帮你生成.但是它生成的DAO可能会多很多的方法.你可以不用那么多方法,但是它里面提供了这种的.用hibern ...

  5. torch.backends.cudnn.benchmark = true 使用情形

    设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题. 应该遵循以下准则: 如果网络的输入数据维度或类型上变化不大,设置  ...

  6. Codevs1922 骑士共存问题

    1922 骑士共存问题 题目描述 Description 在一个n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入. 对于给定的n*n个方格的国 ...

  7. Django项目:CRM(客户关系管理系统)--05--02PerfectCRM创建ADMIN页面03

    /*! *bootstrap.js * * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. ...

  8. JZOJ 5455 拆网线

    Time Limits: 1000 ms Memory Limits: 65536 KB Detailed Limits Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现 ...

  9. 产生冠军 HDU - 2094 (拓扑排序)

    分析: 当有且只有一个节点入度为0时,该节点即为冠军,否则不能产生冠军.所以以下代码中只要入度大于0的无论是几都将其设置为1. #include <stdio.h> #include &l ...

  10. 第二周<导学/分类>

    分类学习 分类算法各有不同 knn naivebyes regression dnn sklearn.linear_modlel 线性函数 sklearn.preprocessing 非线性函数 分类 ...