最近很多同僚都在问我QT环境搭建的问题,趁这几天工作不忙就稍微总结一下,笔者只是一名嵌入式爱好者,文章有错或者表达不当的地方还希望各位同僚能积极指出,笔者一定改正。

开发环境简介:

QT creator版本4.8.1

Ubuntu 12.04

Tiny 6410

先讲一下大体的步骤吧:

步骤一:在ubuntu应用软件中心下载QT creator,至于什么QT助手啊之类的软件根据个人需要自行下载。

步骤二:下载完之后会在桌面生成关于QT creator的快捷方式,打开之后先不要着急去改什么交叉工具链,可以先画个组件编译一下,编译是有讲究的,一定要记住切勿着急去修改编译工具链,笔者曾经就是在稀里糊涂的情况下改了工具链导致QT creator老是出错。编译分两种:第一种:在QT creator中点击build –> run qmake,然后再点run就可以看到效果,也可以一步到位直接点击第二种,保存工程之后退出QT creator,cd到工具所在目录,使用qmake(qmake的作用主要是生成makefile,在makefile中定义了工具链,可执行文件名称等等很多东西),然后再make,这时候便会生成可执行文件(test1), 最后./可执行文件即可,

步骤三:将我的QT工程交叉编译以便于在我的开发板上面运行,那么这个时候就需要交叉编译工具链了,以tiny6410为例,首先安装交叉编译工具链arm-linux-,压缩包在A盘的linux->arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz中,将其拷贝到ubuntu系统中,笔者放在了/opt目录下,tar xvzf  arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz之后,arm-linux这个工具链就被安装在了/opt/FriendlyARM/toolschain/4.5.1/bin/目录下,当我们要使用这个交叉工具链的时候可以使用绝对路径的方式来使用,如/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc hello.c,但是这种方法显得太繁琐每次都要输入这么多,所以我们不如把这个交叉工具链加入到我们系统的环境变量中,环境变量的作用以及添加环境变量的方法见附录1,2。

步骤四:有了交叉工具链之后,我们需要用qmake来生成一个makefile文件、在这里的qmake和我在步骤二中的qmake作用是一样的、但并不是同一个qmake,区别和安装方法见附录3,然后再make生成了可执行文件。

步骤五:做好了上述四个步骤后就来到了最关键的步骤了、在开发板中运行我们的QT程序,需要指出的是QT使用的都是动态库,所以我们需要将这些库拷贝到开发板,

解压缩完之后,我们就可以将我们的可执行程序test1拷贝到我们的开发板了,着急的读者就破不急待的去./test1 –qws,发现又出错了,改过错误之后发现又错了,问题一大片,但是记住别放弃了,见附录4。

附录:

1.   环境变量的作用:在这里我也不百度了,我就简单的谈一下我自己对于环境变量的理解,不知道读者有没有想过我们在shell终端输入诸如ls ,cd这些指令的时候系统怎么就知道这个指令在哪里呢?系统是如何去找到这些指令并且执行的呢?这就是环境变量的作用了,当你输入一个命令的时候系统会根据环境变量里面的设置去找到这个命令所在的目录去执行,有读者会问,那我每次使用绝对路径去告诉系统我使用的是这个目录下的ls,cd行不行?答案是可以的,但是你不觉得麻烦吗?所以设置环境变量的优势就展现出来了,在终端可使用echo$PATH查看系统当前的环境变量,每个目录之间使用:分开,读者可以自己cd  /bin下面ls看一下,你一定会有所发现,当然环境变量的作用远不止于此,笔者只是说出了冰山一角。

2.   环境变量如何添加:笔者总结出来的三种添加环境变量的方法。方法1:临时添加环境变量,以上述中步骤三为例,将arm-linux-这个交叉工具链添加到系统的环境变量中,笔者解压缩完之后的路径是/opt/opt/FriendlyARM/toolschain/4.5.1/bin,在shell中输入export PATH=/opt/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH,环境变量添加成功与否可以使用arm-linux-gcc -v,如果出现了表示安装成功,这个时候就再也不需要/opt/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc 这样使用绝对路径去编译一个文件了,而是直接arm-linux-gcc即可。但是大家可能会发现当我重启一个终端的是时候发现直接arm-linux-gcc又不行了,报错了,提示找不到这个,别着急,方法2:在/etc/bash.bashrc中修改,直接打开这个脚本将export PATH=/opt/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH添加到末尾,随即source  /etc/bash.bashrc,环境变量添加成功可使用上述中检验,读者可自由切换shell,环境变量一直存在,但是有的读者切换了用户,比如说当期有两个用户zhangsan,lisi,读者使用的是zhangsan登录然后设置了这些环境变量,发现切换到了lisi这些环境变量又提示找不到了,别着急,方法3:在/etc/profile中修改,方法同方法2,添加完了之后读者可自由切换shell和用户,发现环境变量一直都存在。这时肯定有读者会问,既然有方法3还要方法2干嘛?答案就像root和普通用户一样,读者可以自行百度,再说下去就是无底洞了。

3.   为什么在ubuntu中qmake之后在开发板上不能把运行?

首先要弄懂qmake这个东西,很多同学问我为什么qmake之后在开发板上面不能运行呢,这个问题很简单,你用的qmake不是嵌入式中用的qmake,而是X86平台的qmake,那问题又来了,为什么我qmake-project的时候就是X86平台呢,答案是环境变量,在Linux操作系统中你可以使用echo $PATH查看环境变量,你看到的环境变量中一定有一个/usr/bin,那么当你使用qmake这个指令的时候系统就会去找这个qmake,刚好在你的/usr/bin下面就有qmake,为什么qmake就在这个目录呢,是因为你在安装QTcreator的时候系统自动把这个qmake放在了这个目录,所以系统就根据环境变量默认找到了这个qmake,而这个qmake就是X86平台用的,所以只能在X86平台使用。那我如何能得到嵌入式中使用的这个神器qmake呢?这个问题其实也很简单,你买开发板的时候厂家一定会给你提供一个QT的包,不要小看这个包,这包里面包含了QT所需要的所有库和编译工具,以tiny6410为例,在A盘的找到这个包之后拷贝到ubuntu中,接着

,需要cd /opt/mini6410/qt-everywhere-opensource-src-4.7.0,建议大家不要偷懒复制。

这期间可能要花费两个小时,读者需要慢慢等待。漫长的两小时过后确定没有报错后qmake就被安装到了/opt/Qt4.7/bin下面,好了,神器在手了,有的人就迫不及待的要使用qmake了,但是怎么用是有讲究的,有读者说我把这个/opt/Qt4.7/bin添加到环境变量就好了,然后就信心满满的添加了,有的如成功了有的如发现qmake之后生成的还是X86的,读者就纳闷了,哈哈,仔细想想可不可以呢?为什么呢?前面已经说过了X86的qmake是在/usr/bin目录下的,你又去添加了一个qmake,那系统知道你是想用哪一个呢?有的如这样写export PATH=/opt/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH发现不成功,有的人这样写export PATH=$PATH:/opt/opt/FriendlyARM/toolschain/4.5.1/bin发现qmake之后是嵌入式用的qmake了,是否是嵌入式中使用的qmake,读者可查看生成的makefile,这两种写法的区别是第一种是在原有的环境变量后面追加自己添加的,第二种是在我的环境变量后面添加系统的环境变量,系统是根据顺序去找qmake,所以第二种成功了,但是在这里笔者不建议大家去添加这个环境变量,而是使用绝对路径/opt/Qt4.7/bin/qmake ,成功了之后大家就可以make啦,如果这个时候大家还不放心我的程序是不是嵌入式ARM可以用的,可以使用如下命令,可以看到是运行在intel的也就是X86的,这个就是ARM平台使用的啦。

4.   问题1:./test1 –qws提示xxxx.so.x找不到或者提示/bin/sh:not found,首先要明白在linux下.so结尾都是动态库,.a结尾的是静态库,.ko结尾的是内核模块,既然提示你找不到这些东西,原因有两个,1.你板子上面没有这个库,2.板子上面有这个库但是系统没有找到,针对第一种问题解决办法也有两个,1.最笨的方法将我们上面打包拷贝到开发板上面QT的lib全部拷到开发板的/lib,2,只拷缺的那一个,有读者会问有没有办法事先知道我的QT工程需要哪些库呢?arm-linux-readelf –d test1,

第二个问题的解决方法是添加环境变量,由于需要的环境变量比较多,所以友善建议写一个脚本,

然后再./tets1 –qws,QT程序顺利跑起来了。

5.   下面介绍一下如何在QT creator软件中设置交叉工具链而不是使用设置环境变量的方法。http://blog.csdn.net/yzysj123/article/details/45072243  贴上链接吧,亲测有效。

QT环境搭建及常见错误相关推荐

  1. Hadoop环境搭建及常见问题解决(保姆级教程)

    Hadoop环境搭建及常见问题解决 零.资源准备 一.环境准备 1. 安装虚拟机 2. 环境准备 1) 创建新用户xiaobai 2) 安装ssh-server 3) 上传相关资源 [4)] 使用pu ...

  2. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  3. Visual Studio集成Qt环境搭建_详解与测试

    1.利器≠戾气 接了两个项目,而这两个项目说起来也很有意思. 一个是监护仪软件开发,要求利用MFC进行开发,因为在此之前接近两年时间一直进行MFC开发:来到清华后,碰到了好多的计算机编程大牛,就GUI ...

  4. QT简介及QT环境搭建

    QT简介及QT环境搭建 文章目录 QT简介及QT环境搭建 一.QT简介 1. 什么是QT? 2. QT的发展史 3. QT支持的平台 4. QT的优点 5. QT开发工具 二.QT环境搭建(CentO ...

  5. nginx学习笔记-01nginx入门,环境搭建,常见命令

    nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...

  6. VS集成Qt环境搭建

    原文地址:VS集成Qt环境搭建作者:一去二三里 用了这么久的Qt,IDE一直都是VS与Creator并用(实际开发以VS为主),至于哪个更好这里不发表看法,各有所长,而且也因人而异,萝卜青菜,各有所爱 ...

  7. 嵌入式Linux下的Qt环境搭建

    嵌入式Linux下的Qt环境搭建 本文介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试 一.tslib编译 要想Qt 支持触摸需要编译 tslib ,以生成触摸相关插件. t ...

  8. python文件打不开 环境变量错误,《自拍教程27》环境变量的常见错误,环境变量错误...

    <自拍教程27>环境变量的常见错误,环境变量错误 错误一: 把文件路径放到Path环境变量 测试同学经常出现,把文件路径,放到Path环境变量里去. 比如添加:C:\Adb\adb.exe ...

  9. arm下的linux可以运行qt吗,Ubuntu平台Arm下QT环境搭建

    第一次接触QT,发现每个人搭建环境问题都不一样,我把我的问题和步骤写下,以供参考! 1. 选择环境,QT需要安装Xwindows环境的操作系统,开始我使用操作系统是没有图形界面的CentOS,发现怎么 ...

最新文章

  1. Java 必看的 Spring 知识汇总!
  2. UVA 473——Raucous Rockers
  3. C++中序列化对象并存储到mysql
  4. 安装其他插件svn消失
  5. 使用thinkPhp,修改线上数据库的配置,请删除 Runtime 中的所有内容后重试
  6. java Session生命周期讨论
  7. ENVI5.3.1使用Landsat 8影像进行图像融合
  8. 图片上传限制文件类型
  9. OA系统四级模块编写测试用例(用户模块)
  10. lcd驱动芯片测试软件,LCD Driver IC测试方法及其挑战
  11. PS学习总结一:入门版必备的基础功能
  12. glsl 抗锯齿锯齿_什么是抗锯齿?
  13. 最新发布!2021软科中国大学排名
  14. excel打开很慢_从海量Excel文件中快速高效地提取数据
  15. Mysql分组查询每组最新的一条数据(三种实现方法)
  16. 把Swing的Icon转换到SWT的Image
  17. Python 生成随机的六位数
  18. 数据结构之KH[第五,六章] -->选择题 (二)
  19. iPhone/IOS使用Fiddler抓包配置
  20. 以后看到华为海军的信息,我就记下来

热门文章

  1. [C语言]PTA 念数字
  2. android动态化ui框架,简单实用的Android UI微博动态点赞效果
  3. 真过份,女友居然要我坐在马桶上小便
  4. 正在获取服务器信息,正在获取远程列表服务器信息
  5. Java学习---day07_继承及final、Object的介绍
  6. 比亚迪F6专用高清车载导航影音登场
  7. 计算机中的同步和异步
  8. 【赵渝强老师】阿里云大数据ACP认证之阿里大数据产品体系
  9. 怎么把好几行弄成一行_怎么把excel表格里多行变成一行数据|excel表格中让多行内容变成为一行...
  10. (解决)application.yml文件图标不能正常显示为绿色叶子