看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考《yum安装qt》
不过初步接触fedora,为了了解一下如何在linux上编译、安装开源代码,所以必须手动编译,走完这一趟。
-----------------------------------
一键安装完,qt编译所有必需库

yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel

------------------------------------
一、下载Qt源码:
首先说一下环境是Fedora15,qt4.7.4.
实际上fedora15,自带qt4.7.2的。我因为移植以前的旧项目,所以需要保持qt版本一致。
我通过VirtualBox共享文件,将win7下载的qt源码包,拷贝到fedora/home/admin/software目录下。
二、配置编译环境  
1、解压tar:
将qt源码,解压到/home/admin/programs
# cd /home/admin/programs
# tar -zxvf /home/admin/software/qt-everywhere-opensource-src-4.7.4.tar.gz
2.配置编译环境
 
提前安装一些rpm,否则./configure会出错。
 

#yum install gcc-c++ //安装g++编译器,否则./configure会报错,见本页《问题1》

#yum install libXtst-devel        //安装Lib库的开发包,否则./configure还会出错,见本页《问题3》

#cd qt-everywhere-opensource-src-4.7.4 //进入当前目录

#./configure   //    ./configure --prefix /usr/local/qt-4.7.4 我加了prefix参数,指定安装路径。在后期运行qtcreator编译的时候出现一个版本冲突的错误。

直接跳转到这一步:安装如下包,否则configure +字体库会出错。

#yum install freetype

#yum install freetype-devel

#yum install fontconfig-devel

#./configure -fontconfig //加了这个参数,qt在fedora中才会安装中文字库,否则后面qt无法中文显示。经过很久才摸索出来的。

可以参考我的文章《【Qt移植到linux】问题7 qt界面中文不显示,乱码等问题》

接着会出现选择版本,选择开源版
输入o
接着选择接受协议
输入yes
 
configure结束后:
三、编译及安装
 
   ./configure如果成功,就可以继续执行gmake(在其它linux版本中可能为make)。一般需要先检查一下几个必备的开发包(development package)是否已经安装好,如果没有,需要在软件包管理器中搜索、安装:
(fedora15里全名:libXrender-devel, libX11-devel,libXext-devel,libXtst-devel)
#yum install libXrender-devel (我的计算机上只有这个开发包,没安装)
#yum install libX11-devel (有了,就不用安装了)
#yum install libXext-devel(有了,就不用安装了)
#yum install libXtst-devel(有了,就不用安装了)
如果不执行上面的操作,在执行gmake的时候,会出错。请参考本页《问题6》

#gmake //漫长的编译,大概3-4个小时

#gmake install  //大概几分钟

小测试一下,运行 /usr/local/Trolltech/Qt-4.8.4/bin/designer ,看见 qt 启动,如下图所示,就说明QT已经安装成功。

 
 

四、其他配置


1、直接更改环境变量,我就是通过这个方法实现的,亲测成功。

1)、#vi /etc/profile 修改所有用户环境变量 ,在文件后添加如下变量内容,

QTDIR=/usr/local/Trolltech/Qt-4.7.4

PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/man:$MANPATH 【这个帮助文档的路径,我咋感觉qt目录下没有man呢】
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 
PATH=/home/admin/programs/qtcreator-2.5.2/bin:$PATH 【后期安装了qtcreator加的路径】
export QTDIR PATH MANPATH LD_LIBRARY_PATH
#source /etc/profile 【为了使重新设置的环境变量生效运行,免重启了】
2)、保存后重启
 
 
备注:
a、也可以这样写环境变量
export QTDIR=/usr/local/Trolltech/Qt-4.7.4
export $QTDIR/bin:$PATH
export $QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 #source /etc/profile  【为了使重新设置的环境变量生效运行,免重启了】
 

b、等号之间不要留空格,否则会出现异常提示:

-bash: export : =:not a valid  identifier。

c、出了在系统全局文件里修改环境变量,当然也可以去当前用户下 修改环境变量,

#vi /home/admin/.bash_profile

#source ~/.bash_profile

可以参考这篇文章《Sheell配置文件 环境变量设置》

 
2、安装/使用Qt Creator
     在官网 下载Qt Creator,截止到今日(2013-8-23), 最新版本为qt-creator-linux-x86-opensource-2.5.2.bin百度网盘下载
 
增加执行权限,并安装qtcreator

#chmod u+x qt-creator-linux-x86-opensource-2.5.2.bin

#./qt-creator-linux-x86-opensource-2.5.2.bin

修改环境变量
#vi /etc/profile 修改所有用户环境变量 ,在文件后添加如下变量内容,
export PATH="/home/admin/programs/qtcreator-2.5.2/bin:$PATH"  
保存后,重启系统。
运行qtcreator:
以管理员身份运行qtcreator
#su - root
#qtcreator
也可以直接将/home/admin/programs/qtcreator-2.5.2/bin目录下的Nokia-QtCreator.desktop 拷贝到fedora桌面文件夹。直接双击就可以启动Qtcreator
也可以自己手动创建Qt Creator桌面快捷方式
 

vi /usr/share/applications/qtcreator.desktop

将下面代码拷贝上去,保存
 
[Desktop Entry]   
Encoding=UTF-8   
Name=QtCreator   
Comment=Qt Creator   
Exec=/home/admin/programs/qtcreator-2.5.2/bin/qtcreator   
Icon=/home/admin/programs/qtcreator-2.5.2/bin/Nokia-QtCteator-64.png   
Terminal=false  
StartupNotify=true  
Type=Application   
Categories=Application;Development  
找到development目录,就可以找到Qt Creator。
 
 
五、编写一个Qt小程序测试
 
 
找个位置,创建一个 hello 目录,进入 hello 目录,编辑一个 hello.cpp 文件,内容如下:
  1. #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. 执行以下命令,生成一个与平台无关的项目文件 hello.pro:
  11. qmake -project

然后输入以下命令,生成一个与平台相关的 Makefile 文件:
  1. qmake hello.pro

然后键入 make 命令就可以构建该程序:
  1. make
执行该程序将会弹出一个内有"Hello Qt!"字样的小窗口:
  1. ./hello

 
 
===================剩下的是补充知识=====================
六、安装过程中遇到的错误

问题1.  一个关于在Linux下安装QT的问题,运行./configure总是报错

运行./configure就报错了,错误如下:

g++ -c -o project.o -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -I/usr/local/qt/include/qmake -I/usr/local/qt/include -I/usr/local/qt/include -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/usr/local/qt/mkspecs/linux-g++ -DHAVE_QCONFIG_CPP project.cppgmake: g++: Command not found

gmake: *** [project.o] Error 127

qmake failed to build. Aborting.

解决方法:安装g++(gcc主要是为了编译c语言,g++是为了编译C++。fedora中g++叫:gcc-c++,直接yum搜索g++无法搜到)

查询是否安装了g++ 

#yum list gcc-c++

若是没有,安装g++

#yum install gcc-c++

安装g++编译包,参考这篇《yum安装g++》

问题2:安装完gcc-c++,运行./configure还是出错如下:

ln: failed to create symbolic link `mkspecs/default': Read-only file system

解决方法:因为我的qt安装包就是win7上共享文件夹过来的,但是在virturalBox共享文件里,是无法创建连接的。所以只需要将该安装包拷贝到linux其他文件目录下就不会遇到该错误了。参考《Read-only file system. What's wrong?》

The VirtualBox shared folder filesystem doesn't allow symlinks, unfortunately. Your only option is to deploy outside of the shared folders.

问题3:Basic Xlib functionality test failed!

解决方法:

这个错误主要是因为,XLib库没有安装,所以在编译X11平台时,应该保证,即那是因为没装有libxtst-dev,使用命令apt-get install libxtst-dev安装(若是有radhat系统安装包,可以在该包里面找到,然后用rpm命令安装。Libxtst-dev就是libXtst-devel-1.0.1-3.1.i386.rpm,有可能还需要安装libX11-dev,libXext-dev)

先查询一下 libxtst-dev的安装情况:

#yum list libxtst*

发现fedora15已经安装libXtst.i686,但是没安装libXtst-devel.i686

所以请安装libXtst-devel

#yum install libXtst-devel

安装成功:

问题4.安装qt后,执行qmake  -v命令,测试qt是否安装成功。但若是没有检测出正确结果,应该在/etc/profile文件中进行PATH环境变量的设置。设置方法如下:

设置方法1:

在/etc/profile文件中末尾添加如下代码:

export PATH=/qtdirector/bin:$PATH

例如:export PATH=/usr/local/Trolltech/Qt-4.5.2/bin:$PATH,qtdirector/bin为qmake的路径。也可以将该行代码写为两行即:

PATH=/usr/local/Trolltech/Qt-4.5.2/bin:$PATH

export PATH

设置方法2:

export QTDIR=/qtdirector/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib

export PATH=$PATH:$QTDIR/bin

其中/qtdirector/为qt库和qmake所在的共同路径,$QTDIR/lib即/qtdirector/lib为qt库所在的路径,$QTDIR/bin即/qtdirector/bin为qmake所在的路径。

问题5. 当编译过程中出现该类似的错误:/opt/QtSDK/Desktop/Qt/474/gcc/lib/libQtGui.so:-1: 错误:undefined reference to `FT_Library_SetLcdFilter'

安装freetype-2.4.6.tar.bz2软件包,可以解决这个问题。

问题6.执行gmake的时候,出错:

/usr/bin/ld: cannot find -lXrender

collect2: ld returned 1 exit status

gmake[1]: *** [../../../../lib/libQtWebKit.so.4.7.4] Error 1

gmake[1]: Leaving directory `/home/admin/programs/qt-everywhere-opensource-src-4.7.4/src/3rdparty/webkit/WebCore'

gmake: *** [sub-webkit-make_default-ordered] Error 2

解决方法:

gmake之前需要安装几个开发包:

gmake之前一般需要先检查一下几个必备的开发包(development package)是否已经安装好,如果没有,需要在软件包管理器中搜索、安装:
    libXrender development package
    libX11-dev
    libXext-dev
    libXtst-dev
(fedora15里全名:libXrender-devel, libX11-devel,libXext-devel,libXtst-devel)
#yum install libXrender-devel (我的计算机上只有这个开发包,没安装)
#yum install libX11-devel
#yum install libXext-devel
#yum install libXtst-devel
 

问题7:新建一个qt程序测试一下,编译的过程中,出现如下错误:

Cannot mix incompatible Qt library (version 0x40702) wiht this library (version0x40704)

解决方法:系统KDE自动调用自带的qt4.7.2,我新安装的是qt4.7.4.所以发生了版本冲突。

最终测试出来,是因为我在前面./configure的时候,指定了qt的安装路径 -profixe。新版本qt没有完全覆盖旧的配置。直接重新configure,不在指定目录,选择fedora默认路径。后面就不会出现该问题了。废了我好大的劲啊。。。。。。我弥陀佛

经过测试,只有在root用户下启动Qt,且运行该用户下运行工程才不会出现上述错误。

参考文章:

3、《Linux下安装Qt》

5、《/usr/bin/ld: cannot find -lXrender》

http://blog.163.com/qimo601@126/blog/static/158220932013719115423596/

Fedora15下搭建QT开发环境及编译QT的更多相关文章

  1. Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )

    看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...

  2. 【001:ubuntu下搭建ESP8266开发环境--编辑 编译 下载】

    系统环境:ubuntu 16.04 TLS 64BIT 编辑器: Eclipse CDT 版本 编译器:xtensa-lx106-elf 交叉编译工具链 下载工具:esptool.py pyseria ...

  3. 在CentOS下搭建Android 开发环境

    在CentOS下搭建Android 开发环境 目录 1.环境搭建 1.1.JDK安装 1.2.Eclipse安装 1.3.ADT安装 1.4.Android SDK安装 1.5.Android NDK ...

  4. [转载]在Windows下搭建Android开发环境

    http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...

  5. Fedora15下安装Android开发环境

    Fedora15下安装Android开发环境需要以下步骤: 完整步骤. 1. 安装正确版本的JDK. 2. 安装Eclipse. 3.  安装ADT. 4.  安装Android SDK. 5.  安 ...

  6. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  7. Mac下搭建php开发环境教程

    方案一:原生安装 这篇文章主要介绍了Mac下搭建php开发环境教程,Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例,需要的朋友可以参考 ...

  8. 【原创】windows下搭建vue开发环境+IIS部署

    [原创]win10下搭建vue开发环境  如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安 ...

  9. Windows下搭建Git开发环境

    Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...

随机推荐

  1. Magento How To Display Product Custom Option On list.phtml

    Some time we need to display custom option of product on category list page to achive this task we o ...

  2. 【转】Gedit中文乱码

    原文网址:http://wiki.ubuntu.org.cn/Gedit%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81#.E5.91.BD.E4.BB.A4.E6.96.B9 ...

  3. 利用autoit自动关闭指定标题窗口

     最近使用PL/SQL Developer 比较两个数据库数据差异,因部分表上没有主键,PL/SQL 就会弹出一个确认框提示某某表没有主键.因为有很多表没有主键,就不停的弹出确认窗口,得不停的点击 ...

  4. 最短路径问题:dijkstar

    算法描述: 输入图G,源点v0,输出源点到各点的最短距离D 中间变量v0保存当前已经处理到的顶点集合,v1保存剩余的集合 1.初始化v1,D 2.计算v0到v1各点的最短距离,保存到D for eac ...

  5. Binary Search Tree BST Template

    Use one queue + size variable public class Solution { public ArrayList<ArrayList<Integer>&g ...

  6. UVALive 6190 Beautiful Spacing (2012 Tokyo regional)

    Beautiful Spacing 题意是给一个文本排版,求在满足题目所给要求的条件下,最长连续空格最小是多少. trick: 贪心地模拟是错的,至少无法证明正确性. 正解应该是二分答案+验证. 比较 ...

  7. Ubuntu 配置Tomcat环境

    1.下载Tomcat http://tomcat.apache.org/,下载Tomcat 8(由于目前最新eclipse不支持tomcat 9) 将下载的apache-tomcat-8.0.35.t ...

  8. pyqt 右击+指定位置点击例子学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import sys from PyQt4.QtCore impor ...

  9. cStringIO模块例子

    # Vorbis comment support for Mutagen # Copyright 2005-2006 Joe Wreschnig # # This program is free so ...

  10. xib和Storyboard 创建Cell的方式

    xib 方式 .在Cell.h文件中加一个宏 #define cellIdentifier @"customCell" . ViewController中: - (void)vie ...