1.4 Qt在Linux下安装
Qt在Linux系统里的安装要稍微复杂一些,因为Linux发行版众多,所以安装过程有些差异。 由于Linux系统都可以自行安装 GNU 工具集(对应Windows系统里的MinGW), 所以Qt在Linux系统里的安装包没有自带g++等编译生成工具以及OpenGL开发库, 需要根据不同的Linux发行版提前装好GNU 工具集和OpenGL开发库。Qt官方网站有介绍在Linux下安装的页面: http://doc.qt.io/qt-5/linux.html 下面就依样画葫芦,介绍安装Qt开发环境的过程。
1.4.1 安装前准备工作
对于Linux系统,Qt官方的安装包总是假定C++编译器compiler、调试器debugger、生成器make以及其他开发工具 由该操作系统自己提供,另外构建Qt图形界面程序还需要OpenGL库文件(扩展名为 .a 和 .so)和头文件(扩展名为 .h), OpenGL的开发库也是需要操作系统自己提供。所以在安装Qt官方run文件之前,必须先安装好Linux系统自己软件源里面 的GNU开发工具集和OpenGL开发库。下面针对三类 Linux 操作系统安装相应的GNU开发工具集和OpenGL开发库, 请注意安装软件都需要root权限,并且要联网安装。
(1)如果是 Debian/Ubuntu/Deepin (apt-get) 系列操作系统,执行命令:
sudo apt-get install build-essential libgl1-mesa-dev
(2)如果是 Fedora/RHEL/CentOS (yum) 系列操作系统,执行命令:
sudo yum groupinstall "C Development Tools and Libraries" sudo yum install mesa-libGL-devel
(3)如果是 openSUSE (zypper) 系列操作系统,执行命令:
sudo zypper install -t pattern devel_basis
根据不同的操作系统执行相应的命令,完成安装后就可以继续下面的安装了。
读者请注意一个操作系统版本的问题:因为Linux社区发行版非常活跃,版本更新快(尤其是Ubuntu),经常是半年到一年更新一次, 所以上述命令通常只能在比较新的Linux版本上才能执行成功,旧的Linux版本很可能是Linux发行版官方都不支持了, 因而会导致上面命令执行失败。一般对于活跃的Linux社区,其单个系统版本的生存期是一年到两年左右,安装Qt开发环境之前最好更新到2014年之后发布的Linux版本。
1.4.2 安装Qt开发环境
Qt安装包下载方式之前说过了,32位Linux安装包为 qt-opensource-linux-x86-5.4.0.run, 64位Linux安装包为 qt-opensource-linux-x64-5.4.0.run。下载的run文件不一定具有可执行权限, 可以执行如下命令开启执行权限(以64位安装包为例):
chmod +x /文件夹路径/qt-opensource-linux-x64-5.4.0.run
将“文件夹路径”替换为自己系统里该run文件路径即可。然后可以直接点击运行该run文件,开始安装。 注意以下是以普通用户权限安装的,安装位置是 /home/用户名/Qt5.4.0/ , 如果希望安装到其他的 如 /opt/ 目录,是需要root权限的。
下面示范简单的普通用户安装方式,需要用户家目录 /home 所在磁盘分区至少剩余 2 GB 空间,用于安装Qt开发环境。 所示范的是64位安装包,使用的操作系统是 openSUSE Linux 13.2 (64 位),操作系统本地化语言是简体中文。 直接单击运行qt-opensource-linux-x64-5.4.0.run文件,等待run文件自动解压,然后出现如下安装界面:
点击“下一步”。进入指定“安装文件夹”界面:
默认就会安装到用户主文件夹的Qt5.4.0文件夹里 (上图suse132是当前用户名,/home/suse132/是其主文件夹),不需要修改, 直接点击“下一步”,进入“选择组件”界面:
默认情况是不装Qt源代码的,点击下方的“全选”,选中所有组件就会全部安装。 点击“下一步”,进入“许可协议”界面:
选择“I have read and agree to the terms contained in the license agreements.”这一栏, 同意许可协议,然后点击“下一步”,进入“已做好安装准备”界面:
如果想查看各个组件详情,可以点击“显示详细信息”。 点击“安装”,就会开始正式的安装过程,时间比较长,请耐心等待。 安装完成时会显示 100% :
点击“下一步”,进入“正在完成 Qt 5.4.0 向导”界面:
点击“完成”,会自动打开集成开发环境 Qt Creator。
如果将Linux下安装和Windows下安装对比一下,可以发现Linux下没有关于“开始菜单快捷方式”的设置。 那么下次上哪里找 Qt Creator 呢?
Qt 开发环境安装时会创建一个 Qt Creator 快捷方式文件 然后会呈现在 Linux 的开始菜单里面 打开“开始菜单”-->“应用程序”-->“开发”-->“集成环境” -->“The IDE of choice for Qt development.”,
可以看到 Qt 的图标,如下图所示:
以后点击该工具就可以进行Qt开发了。该图标对应的快捷方式文件位于:用户主文件夹/.local/share/applications/, (.local是隐藏文件夹,默认看不到,KDE 文件管理器里按快捷键 Ctrl + . ,即 Ctrl 和点号,对于 GNOME 文件管理器里按快捷键 Ctrl + H,就可以切换是否显示隐藏文件) 快捷方式文件名是 DigiaQt-qtcreator-community.desktop ,如下图所示:
为方便使用 Qt Creator,可以右击复制该文件,然后粘贴到桌面文件夹或者主文件夹里使用, 点击该快捷方式文件就会打开 Qt Creator 工具。**中文输入法问题** 按照上面安装方式,如果操作系统里的正好是 Fcitx 中文输入法,会出现新安装的 Qt Creator 里不能进行中文输入的问题。解决方法参考: http://blog.csdn.net/crazyboy2009/article/details/38537099 该帖子是解决 Ubuntu 里面问题的。对于 openSUSE Linux,安装软件包 fcitx-qt5 , 然后复制 .so 文件:
/usr/lib64/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so # 64位系统是/usr/lib64/... # 32位系统是/usr/lib/...
粘贴一份到目录:
Qt安装目录/Tools/QtCreator/bin/plugins/platforminputcontexts/
再粘贴一份到目录:
Qt安装目录/5.4/gcc_64/plugins/platforminputcontexts/
1.4.3 Qt开发环境目录结构
Qt 在 Linux 系统里安装的东西比在 Windows 里的要少一些,因为 Linux 系统自带编译生成工具, 在前面 1.4.1 安装的就是编译生成工具和 Qt 依赖的库文件。在 Linux 系统里 Qt 安装的开发环境大致分为两部分:
- Qt 类库的路径为 ~/Qt5.4.0/5.4/gcc_64 ;
- QtCreator 集成开发环境的路径为 ~/Qt5.4.0/Tools/QtCreator 。
如果安装了 Qt 类库的源代码,则位于 ~/Qt5.4.0/5.4/Src 目录里面(波浪号 ~ 是指当前用户主文件夹,如用户 suse132 的主文件夹为 /home/suse132)。我们将 Linux 系统里 Qt 安装根的目录树绘制如下:
安装目录里的结构和 Windows 系统里差不多,Docs 里的是帮助文档,需要 Qt Assistant 来查阅,Examples 是例子代码,最后的 MaintenanceTool 是管理工具,如果是用离线包安装的,那只能用它删除 Qt 开发环境,如果是在线安装方式,还可以用它管理 Qt 开发环境的组件和升级组件。 我们以 Qt 类库的目录 QTDIR 再细分查看,得到下图 Qt 类库根的目录树:
图上面列出的比较有限,主要是让读者熟悉一下 Qt 开发环境,下一小节我们自己编写一个 Qt 命令行脚本。
1.4.4 Qt开发环境脚本
如果使用集成开发环境 Qt Creator 开发程序,是不需要关心环境变量之类的设置的, 该工具自己会去寻找编译器g++、调试器gdb、生成器make以及系统里的开发库, 所以建议新手使用 Qt Creator ,这样比较无恼。
当然,也有不怕一万,就怕万一的。万一需要在命令行里编译 Qt 程序怎么办? 一般 Linux 系统里的编译生成工具和开发库都是不需要配置的,都是放在固定的目录里, 比如64位库文件位于 /usr/lib64/ 。这里讲一些特殊情况, 比如 Linux 系统目录里面有一份 Qt 4.8.6 的开发库, 而我们又在用户目录里面装了新的 Qt 5.4.0 ,这时候打开操作系统命令行,执行命令:
qmake -v
这时候显示的是系统路径里的Qt 4.8.6 版本:
如果我们进入新装的 Qt 5.4.0 里面所带的 bin 目录,执行命令:
cd ~/Qt5.4.0/5.4/gcc_64/bin/ ./qmake -v
./ 就是指定当前目录里的qmake程序,这里是属于 Qt 5.4.0 的,所以显示为:
问题就来了,如果是使用系统自带的 Qt 4.8.6,那么打开默认命令行就可以编译了,不需要配置。 如果要用我们自己安装的 Qt 5.4.0 ,那该如何配置自己定制的命令行来编译程序呢?当然是自己编个脚本来配置了。我们在用户主文件夹新建一个文件 qt5env.sh , 用编辑器打开编辑内容,如果是 KDE 桌面环境,该文件内容设置为:
export QTDIR=~/Qt5.4.0/5.4/gcc_64 export PATH=~/Qt5.4.0/5.4/gcc_64/bin:$PATH export LD_LIBRARY_PATH=~/Qt5.4.0/5.4/gcc_64/lib:$LD_LIBRARY_PATH cd ~ konsole
如果是 GNOME 桌面环境,该文件内容设置为:
export QTDIR=~/Qt5.4.0/5.4/gcc_64 export PATH=~/Qt5.4.0/5.4/gcc_64/bin:$PATH export LD_LIBRARY_PATH=~/Qt5.4.0/5.4/gcc_64/lib:$LD_LIBRARY_PATH cd ~ gnome-terminal
两种桌面环境的命令行工具名字不一样,KDE 桌面里用 konsole 启动命令行, GNOME 桌面里用 gnome-terminal 启动命令行。上面 qt5env.sh 文件里内容比较简单, 就是设置环境变量 QTDIR 指示 Qt 库的位置,然后添加 Qt 库的 bin 目录到 PATH 变量里,并且添加 Qt 库的 lib 目录到 LD_LIBRARY_PATH 变量里。 由于我们把 QTDIR/bin 目录放在了旧的 $PATH 变量的前面,所以进入该命令行后, 会优先使用我们自己安装的 5.4.0 版本 Qt 库工具集。LD_LIBRARY_PATH 变量是类似地设置,LD_LIBRARY_PATH 是指定动态链接库的路径,也是优先使用我们安装的 Qt 5.4.0 版本动态链接库。 默认情况下该文件不具有可执行权限,需要执行下面命令使其生效:
chmod +x ~/qt5env.sh
以后就可以点击该脚本启动我们自己定制的命令行了。可以在我们定制的命令行里面尝试逐条运行以下命令看看效果:
qmake -v assistant designer linguist
还有一个需要注意的问题,上面安装和配置都是同一个用户,比如 suse132, 如果同一主机上其他用户想用该版本 Qt 库, 需要将 QTDIR 、PATH、LD_LIBRARY_PATH 三行里面的波浪线 ~ 替换为安装该 Qt 库的用户主文件夹,比如 /home/suse132 , 使用绝对路径方式指明 Qt 库的路径( cd ~ 不用变)。
1.4.5 其他安装方式
上面介绍的是安装Qt官方发布的开发环境,还有其他的安装方式。 Linux一般都是自带Qt动态库的,目前使用Qt4系列版本的居多。 Qt5还是比较新的,基于Qt5的KDE5桌面正在开发过程中, KDE5可能不太稳定,目前还没有作为默认Linux桌面使用。 对于不同的Linux发行版,其原生使用的安装包不一样,有rpm系列的, 也有deb系列的,还有其他格式安装包的。因为Qt是开源软件, 大家都可以按照GPL开源协议自己编译发布Qt运行库和开发环境, 所以Linux发行版社区通常会自行编译Qt库和开发工具的源代码, 生成Qt运行库和开发工具的原生安装包(rpm、deb等), 这样用户就可以使用该Linux发行版自家打包的Qt开发环境了。
安装Linux发行版自家打包的Qt开发环境一般都很简单,联网之后,一两句命令就可以搞定,而且rpm或deb等安装包会自动配置好开发环境,不需要其他操 作,即装即用。 比如在openSUSE Linux里面只需要以root用户执行如下两句命令:
zypper in -t pattern devel_qt5 zypper in qt-creator libQt5Sql5-mysql libQt5Sql5-sqlite libQt5Sql5-unixODBC libqt5-qtscript-devel libQt5WebKit5-devel libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtquick1-devel libqt5-qtwebsockets-devel
等待联网安装完成后就可以在“开始菜单”-->“应用程序”-->“开发”-->“集成环境”里面找到Qt Creator,点击运行就可以了。 需要注意的是不同Linux发行版在不同时期打包的Qt版本是不一样的,会不断升级, 所以和上面Qt官方的5.4.0版本会有些差异,最好看看相应的发行说明。最后补充一个在Mac OS X系统里安装Qt开发环境的链接: http://doc.qt.io/qt-5/osx.html