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

时间:2022-04-30 06:59:20
看了不少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目录下。
Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
 
二、配置编译环境  
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
Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
 
接着选择接受协议
输入yes
Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
 
configure结束后:
Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
 
三、编译及安装
 
   ./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、也可以这样写环境变量
Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-devel )
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.  
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication app(argc, argv);
  7.     QLabel *label = new QLabel("Hello Qt!");
  8.     label->show();
  9.     return app.exec();
  10. }
  11. 执行以下命令,生成一个与平台无关的项目文件 hello.pro:
  12. 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!

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

这个错误主要是因为,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

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

 所以请安装libXtst-devel

#yum install libXtst-devel

安装成功:

Fedora15下搭建QT开发环境及编译QT(提前一键安装完,qt编译所有必需库 yum install gcc-c++ libXtst-devel freetype freetype-devel fontconfig-devel libXrender-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

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

 

解决方法:

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)

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

 

解决方法:系统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/