Linux 下编译并安装配置 Qt

本文介绍的是Linux 下编译并安装配置 Qt,最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发。考虑到程序的跨平台可移植性,最终选择使用 Qt 开发。相对来说,国内关于 Qt 相关文档并不算很多。作者将 Linux 下编译并安装配置 Qt 全过程总结了一下,只希望可以方便更多的朋友!

1、获得源代码

src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/

2009 年 10 月 1 日发布的 qt-x11-opensource-src-4.5.3.tar.gz,大小 122 Mb。

2、解压缩

  1. tar xvfz qt-x11-opensource-src-4.5.3.tar.gz 

3、生成 makefile 文件

  1. ./configure 

这个时候他会问你:“Which edition of Qt do you want to use?”

然后给你两个类型供选择:

  1. Type ''c'' if you want to use the Commercial Edition.  
  2. Type ''o'' if you want to use the Open Source Edition. 

第一个是商业版,第二个是自由版。

选择 ''o''(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。

这时候,出现许可界面。

选择  ''yes'' 接受许可协议。

开始生成 makefile 文件。这个大约需要 5 -10 分钟的时间。

4、Qt 编译

  1. gmake 

这个过程时间比较长,需要两个小时左右。

5、Qt 安装

运行 gmake install

默认安装至 /usr/local/Trolltech/Qt-4.5.3

大约 5 - 10 分钟。正常结束,安装完毕。

运行 /usr/local/Trolltech/Qt-4.5.3/bin/designer ,看见 qt 启动,也就是说 qt 安装好了。

6、设置环境变量

一、先修改用户环境变量

  1. vi /home/defonds/.bashrc 

在其最后添加以下信息

  1. export QTDIR=/usr/local/Trolltech/Qt-4.5.3  
  2. export PATH=$QTDIR/bin:$PATH  
  3. export MANPATH=$QTDIR/man:$MANPATH  
  4. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 

二、再修改所有用户环境变量

  1. vi /etc/profile 

在其最后添加以下信息

  1. export QTDIR=/usr/local/Trolltech/Qt-4.5.3  
  2. export PATH=$QTDIR/bin:$PATH  
  3. export MANPATH=$QTDIR/man:$MANPATH  
  4. export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 

三、测试一下

重新开一个终端,输入命令:

  1. qmake -v 

输出结果:

  1. QMake version 2.01a  
  2.  Using Qt version 4.5.3 in /usr/local/Trolltech/Qt-4.5.3/lib 

输入命令:

  1. which qmake 

输出结果:

  1. /usr/local/Trolltech/Qt-4.5.3/bin/qmake 

证明 Qt 环境变量已经被配置成功。

编者按 :

Linux 启动时,先读取用户环境变量,即 /home/defonds/.bashrc 的设置。次读取所有用户环境变量,即 /etc/profile 中的配置。

开始 Qt

写个简单的 Qt 程序使用安装的 Qt 编译来测试一下它的工作效果

新建一个文件名为 hello.cpp,其内容如下:

  1. view plaincopy to clipboardprint?#include <QApplication>     
  2. #include <QLabel>     
  3. int main(int argc,char *argv[])    
  4. {    
  5.     QApplication app(argc,argv);    
  6.     QLabel *label = new QLabel("Hello Qt!");    
  7.     label->show();    
  8.     return app.exec();    
  9. }    
  10. #include <QApplication> 
  11. #include <QLabel> 
  12. int main(int argc,char *argv[])  
  13. {  
  14.  QApplication app(argc,argv);  
  15.  QLabel *label = new QLabel("Hello Qt!");  
  16.  label->show();  
  17.  return app.exec();  
  18. }  

保存 hello.cpp,编译过程如下:

在 hello.cpp 所在目录下,运行命令

  1. qmake -project 

hello.cpp 同目录下有 hello.pro 文件被生成,它是与平台无关的工程文件。

在 hello.cpp 所在目录下,运行命令

  1. qmake hello.pro 

同目录下有 Makefile 文件被生成(Makefile是指导编译器编译源代码的配置文件,在其目录下输入make命令(nmake在win32,vc6环境)就可以完成编译)。在 hello.cpp 所在目录下,运行命令

  1. make 

同目录下有 hello,hello.o 两个文件被编译生成。其中 hello 就是在当前 Linux 系统下使用 Qt 编译生成的可执行文件了。双击运行 hello,“Hello Qt!“ 文本框弹出,OK!做到这一步,证明 Qt 已经完全可以在你的电脑上运作了。还等什么呢,开始你精彩而又愉快的 Qt 开发之旅吧!

小结:关于Linux 下编译并安装配置 Qt (完整版)的内容介绍完了,希望本文对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

itext jsp页面打印

最近项目中需要一个打印功能&#xff0c;需求很简单&#xff0c;只要打印出单据就可以了&#xff0c;画出一个表格&#xff0c;一些信息需要从数据库中提取 找到了免费的itext&#xff0c;可以实现我的简单的功能了 代码&#xff1a;&#xff08;打印方法&#xff09; public S…

android token机制_你真的了解16.6ms刷新机制吗?

阅读本文前&#xff0c;请您先点击上面的蓝色字体“Android扫地僧”&#xff0c;“关注”后再点击置顶公众号&#xff0c;优质干货&#xff0c;重磅资源第一时间送达。散人丶https://juejin.im/post/5ce686a46fb9a07ec754f470前言之前在整理知识的时候&#xff0c;看到android屏…

dfa2.java 原理_DFA编程练习2

题目: 请设计DFA, 使其接受全部含有奇数个1的串, 假定 ∑ {0, 1}.解:DFA可能出现两个个状态:qeven: 读入了偶数个1的串.qodd: 读入了奇数个1的串, 该状态也是终结状态(accept state).它们的状态转移图如下:编写程序, 运行效果如下:测试用例说明:0000不被上图的DFA接受1111不被…

Asp.net的HTTP请求处理过程

说明&#xff1a; &#xff08;1&#xff09;、客户端浏览器向服务器发出一个Http请求&#xff0c;此请求会被inetinfo.exe进程截获&#xff0c;然后转交给 aspnet_isapi.dll进程&#xff0c;接着它又通过Http Pipeline的管道&#xff0c;传送给aspnet_wp.exe这个进程&#xff…

ubuntu13.10 编译时 关于链接xlib 库阶段出错的问题解决

/usr/bin/ld: fmouse_main.o: undefined reference to symbol XFlush /usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [freepen_drv] 错误 1 以上为错误提示&#xff0c…

fread读取整个文件_qt如何实现大文件的加载和显示

最近研究了下如何用qt的原生控件来加载和显示大文件&#xff08;>1G&#xff09;&#xff0c;分享下一些摸索经验。下文源码&#xff1a;compilelife/loginsight​github.com文件的内存映射在开始qt部分之前&#xff0c;我们先了解一个概念——文件的内存映射。我们知道一般…

[转]listview中设置背景图片后 拉动变黑

经本人亲测有效...在Android中&#xff0c;ListView是最常用的一个控件&#xff0c;在做UI设计的时候&#xff0c;很多人希望能够改变一下它的背景&#xff0c;使他能够符合整体的UI设计&#xff0c;改变背景背很简单只需要准备一张图片然后指定属性 android:background"d…

编译pjsip2.1.0 vidgui程序时,xlib保错问题

/usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line 以上为错误提示&#xff0c;为链接阶段未指定正确的库文件导致&#xff1b; 解决办法&#xff1a; 修改pro文件&#xff0c;增加下面这一行 LIB -lX11 -L/usr/lib/i386-linux-g…

linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性

Linux系统的write调用到底是不是原子的。网上能搜出一大堆文章&#xff0c;基本上要么是翻译一些文献&#xff0c;要么就是胡扯&#xff0c;本文中我来结合实例来试着做一个稍微好一点的回答。先摆出结论吧。结论包含两点&#xff0c;即write调用不能保证什么以及write调用能保…

java 判断对象为控制_Java流程控制

Java流程控制1、Scanner对象①java.util.Scanner是Java5的新特性&#xff0c;可以通过Scanner类来获取用户的输入。②基本语法&#xff1a;1 Scanner snew Scanner(System.in);③通过next()和nextLine()方法接受用户输入&#xff0c;通过hasNext()和hasNextLine()方法来判断用户…

lsb_release -a 查询系统版本

LSB是Linux Standard Base的缩写&#xff0c;lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数&#xff0c;则默认加上-v参数。 -v, --version 显示版本信息 -i, --id 显示发行版的ID -d, --description 显示该发行版的描述信息 -r, --release 显示当…

directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?

遇到服务器故障&#xff0c;问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手&#xff0c;这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点&#xff1a;一、尽可能搞清楚问题的前因后果不要一下子就扎到服务器前面&#xff0c;你需要先搞明白对这…

Hadoop源代码分析(二)

下面给出了Hadoop的包的功能分析。 Package Dependences tool 提供一些命令行工具&#xff0c;如DistCp&#xff0c;archive mapreduce Hadoop的Map/Reduce实现 filecache 提供HDFS文件的本地缓存&#xff0c;用于加快Map/Reduce的数据访问速度 fs 文件系统的抽象&…

java同步锁如何使用_java 同步锁(synchronized)的正确使用姿势

关于线程安全&#xff0c;线程锁我们经常会用到&#xff0c;但你的使用姿势正确不&#xff0c;反正我用错了好长一段时间而不自知。所以有了这篇博客总结下线程锁的正确打开姿势废话不说看例子一&#xff0c;对整个方法进行加锁1&#xff0c;对整个方法进行加锁&#xff0c;不同…

IDE--ubuntu下安装 Source insight

2013-06-03 09:05 74人阅读 评论(0) 收藏 举报 习惯了在source insight下编辑阅读源码&#xff0c;在linux下用vi总是用不好 &#xff0c;还是在ubuntu上用回熟悉的source insight。 在ubuntu中&#xff0c;安装windows程序用wine&#xff0c;然后用wine安装windows软件即可。…

python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

前言 大家在接口测试的过程中&#xff0c;很多时候会用到对CSV的读取操作&#xff0c;本文主要说明Python3对CSV的写入和读取。下面话不多说了&#xff0c;来一起看看详细的介绍吧。 1、需求 某API&#xff0c;GET方法&#xff0c;token,mobile,email三个参数 token为必填项 mo…

密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制

写这篇文章之前&#xff0c;我去百度了一下啥叫锁&#xff0c;百度百科上写道&#xff1a;置于可启闭的器物上&#xff0c;以钥匙或暗码开启。确实我们一般理解的锁就是门锁&#xff0c;密码锁&#xff0c;但是在计算机科学中&#xff0c;锁又是啥&#xff0c;说实话&#xff0…

对cookie和子cookie操作的封装

1 /**2 * 封装cookie的操作3 * type {Object}4 */5 var CookieUtil {6 /**7 * 根据cookie的名字获取相应的值8 * param name cookie名字9 * return {*}10 */11 get:function (name) {12 //对name进行URL编码13 var cookieName…

解决Ubuntu下切换到root用户后没有声音问题

Ubuntu在root用户下&#xff0c;为了安全考虑默认是关闭了声音系统的。 如果要开很简单&#xff0c;因为root登录后pulseaudio没有启动。所以要先启动它 将root加到pulse和pulse-access组&#xff1a; sudo usermod -a -G pulse-access root gpasswd -a root pulse gpasswd -…

lua 给userdata设置元表_lua学习之复习汇总篇

第六日笔记1. 基础概念程序块定义在 lua 中任何一个源代码文件或在交互模式中输入的一行代码程序块可以是任意大小的程序块可以是一连串语句或一条命令也可由函数定义构成&#xff0c;一般将函数定义写在文件中&#xff0c;然后用解释器执行这个文件换行在代码中不起任何作用&a…