####转载:http://blog.sina.com.cn/s/blog_c2b97b1d01016x1i.html
1、下载源码(前面已经提到了)
选择合适自己的源码。
先用“uname -a”看下系统信息:
uname -a
2、解压缩文件
sudo tar -xzvf qt-everywhere-opensource-src-4.7.4.tar.gz
我更改了下目录权限
sudo chmod -R 777 qt-everywhere-opensource-src-4.7.4
3、生成Makefile文件
进入目录
cd 目录
执行配置文件命令
./configure
这时候出现下面情况:
Which edition of Qt do you want to use ?

Type 'c' if you want to use the Commercial Edition.

Type 'o' if you want to use the Open Source Edition.

问你要选择哪一个类型?第一个是商业版,第二个是自由版。

我选择'o',即自由版本。然后输出以下内容:

You are licensed to use this software under the terms of
the Lesser GNU General Public License (LGPL) versions 2.1.
You are also licensed to use this software under the terms of
the GNU General Public License (GPL) versions 3. Type '3' to view the GNU General Public License version 3.
Type 'L' to view the Lesser GNU General Public License version 2.1.
Type 'yes' to accept this license offer.
Type 'no' to decline this license offer. Do you accept the terms of either license? 上面大概意思就是说:
这是Linux/X11 Qt的开源版本,GNU通用公共许可证(LGPL),版本2.1和版本3,允许你使用该软件,

按'3'来查看版本3,按'L'来查看版本2.1,按“yes”接受此许可提供;按“no”不接受此许可提供。

我按了“yes”

然后就是:

Creating qmake. Please wait...

....................

....................

等一会配置完成,输出如下:
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.7.4 To reconfigure, run 'make confclean' and 'configure'.

4、编译安装

sudo make

这个“make”时间就有点长了,估计2个小时左右吧,看你人品怎么样了。

这里就说下gmake 和 make的区别,gmake是GNU Make的缩写。 Linux系统环境下的make就是GNU Make,之所以有gmake,是因为在别的平台上,make一般被占用,GNU make只好叫gmake了。 比如在安装二进制文件进行编译时要使用make命令,但如果在Solaris或其他非GNU系统中运行,必须使用GNU make,而不是使用系统自带的make版本,这时要用gmake代替make进行编译.

由上可知,在这里执行make与gmake是一样的。

完成后执行make install.

sudo make install

由于默认安装至 /usr/local/Trolltech/Qt-4.7.4

运行 /usr/local/Trolltech/Qt-4.8.1/bin/designer

cd /usr/local/Trolltech/Qt-4.7.4/bin

./designer

看见qt启动,也就是说qt安装好了。

5、设置环境变量

先修改登录用户环境变量

vim ~/.profile

在其最后添加以下信息

    export QTDIR=/usr/local/Trolltech/Qt-4.7.4
export MANPATH=$QTDIR/manMANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
PATH=$PATH:$QTDIR/binPATH

如果要修改所有用户环境变量

sudo vi /etc/profile

在其最后添加以下信息

    export QTDIR=/usr/local/Trolltech/Qt-4.7.4
export MANPATH=$QTDIR/manMANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
PATH=$PATH:$QTDIR/binPATH

执行source /etc/profile命令,之后进行测试

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

qmake -v

错误:qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such file or directory

解决办法:由于qtchooser默认选择路径中没有指向qmake路径。注:qtchoooster在/usr/lib/x86_64-linux-gnu/qt-default/中。将/usr/lib/x86_64-linux-gnu/qt-default/qtchoooster的default.conf文件中的第一行改为:/home/zhuquan/Qt5.7.0/5.7/gcc_64/bin(是你的Trolltech中的bin目录路径)

但default.conf文件是只读的,所以要改下权限。

输出结果:

QMake version 2.01a

Using Qt version 4.7.4 in /usr/local/Trolltech/Qt-4.7.4/lib

输入命令:

which qmake

输出结果:

/usr/local/Trolltech/Qt-4.7.4//bin/qmake

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

6、QT下Hello.cpp示例测试

我建了一个qt_test目录

mkdir qt_test

cd qt_test

vi hello.cpp

hello.cpp的内容如下:

#include

#include

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

{

QApplication app(argc,argv);

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

label->show();

return app.exec();

}

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

qmake -project

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

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

qmake qt_work.pro

同目录下有 Makefile 文件被生成(Makefile是指导编译器编译源代码的配置文件)。

然后运行命令:

make

同目录下有 qt_work、hello.o 两个文件被编译生成。其中qt_work 就是在当前 Linux 系统下使用 Qt 编译生成的可执行文件了。

运行qt_work,

./qt_work

“Hello Qt!“ 文本框弹出,OK!做到这一步,证明 Qt 已经完全可以在你的电脑上运作了.

PC端QT源码编译的更多相关文章

  1. Qt源码编译

    Qt源码编译 eryar@163.com Key words. Qt, 源码编译 1.Introduction 随着Qt版本升级,源码编译出来的库体积越来越大.如果只是用Qt来做GUI,Qt提供的预编 ...

  2. 麒麟系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12

    前言   上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到从源码编译的Qt,所以本篇如何在银河麒麟系统V4上编译Qt5.12源码.   银河麒麟V4版本   系统版本:   Qt源码下载    ...

  3. qt-5.6.0 移植之qt源码编译

    其实这只是给自己看的一个configure选项笔记,没有太多的东西. 首先: 下载qt5.6的源码: 地址: http://download.qt.io/archive/qt/5.6/ 下载完解压: ...

  4. 查看和调试Qt源码(动态编译的QT也可进入源码)good

    简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...

  5. Windows,linux下编译qt源码(比较简单)

    一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...

  6. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  7. CentOS6.5下搭建LAMP环境(源码编译方式)

    CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL) 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP ,WAMP,MAMP等.这里我介 ...

  8. QT源码分析:QTcpServer

    最近在看有关IO复用方面的内容,自己也用标准c++库实现了select模型.iocp模型.poll模型.回过头来很想了解QT的socket是基于什么模型来实现的,所以看了QT关于TcpServer实现 ...

  9. vs下 qt源码调试

    1.下载qt源码,我下载的是4.7.1版本 2.vs安装qt插件qt-add-in 3.进入qt根目录,打开configure文件,找到 QT_DEFAULT_BUILD_PARTS="li ...

随机推荐

  1. UltraEdit工具安装和注册机破解

    1.关闭网络连接(或者直接拔掉网线). 2.打开UltraEdit软件,稍等片刻会出现提示你你使用的是试用版本的窗口.如下图,点击“注册”. 3.填写许可证id和密码.许可证id可任意填写,不过根据经 ...

  2. hibernate 多对多(many-to-many)

    多对多(many-to-many):在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型:hibernate会为我们创建中间关联表,转换成两个一对多. 1. E- ...

  3. Info.plist字段列表详解

    常用字段: 1.获取版本信息: NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary]; NSString *localVersio ...

  4. LeetCode Minimum Time Difference

    原题链接在这里:https://leetcode.com/problems/minimum-time-difference/description/ 题目: Given a list of 24-ho ...

  5. 【模板】NOIP模板汇总

    图论 数据结构 数学 其他: 洛谷模板:a,b两个字符串,求b串在a串中出现的位置 #include<iostream> #include<cstdio> #include&l ...

  6. SVN报错:sqlite[S5]:database is locked

    昨天下午修改几个冲突的jar包后提交svn后报错,接下来svn操作就失灵了,无论是clean up还是revert还是release lock都无济于事.解决办法: 首先下载sqlite3,我的是64 ...

  7. python开发函数进阶:可迭代的&迭代器&生成器

    一,可迭代的&可迭代对象 1.一个一个的取值就是可迭代的   iterable#str list tuple set dict#可迭代的 ——对应的标志 __iter__ 2.判断一个变量是不 ...

  8. 异步fifo的读写

    这里不讨论异步fifo是如何实现的,而是在实现fifo的前提下,对fifo的读写. 现在遇到的问题是:总线的数据不能写入fifo中,但是地址能加一. 代码如下: if( !fifo_tx_full & ...

  9. vs2017发布web项目

    1.webform项目发布 1.右键选择项目. 2.选择自定义. 3.“配置文件名称”,发布后生成在项目中记录此次发布选择的配置信息文件名,下次发布默认为此次选择的配置信息,可以删除,随便填一个. 4 ...

  10. Cocos2D中的内部函数

    virtual bool isVisible();    // 是否可见    virtual void setVisible(bool visible);      // 设置是否可见    boo ...