-
Notifications
You must be signed in to change notification settings - Fork 7
/
ch01-04.htm
228 lines (223 loc) · 16.6 KB
/
ch01-04.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>ch01-04</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="thumbnailviewer.css" type="text/css">
<script src="thumbnailviewer.js" type="text/javascript">
/***********************************************
* Image Thumbnail Viewer Script- © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
</script> </head>
<body>
<div class="os1">1.4 Qt在Linux下安装</div>
<p> Qt在Linux系统里的安装要稍微复杂一些,因为Linux发行版众多,所以安装过程有些差异。 由于Linux系统都可以自行安装 GNU
工具集(对应Windows系统里的MinGW), 所以Qt在Linux系统里的安装包没有自带g++等编译生成工具以及OpenGL开发库,
需要根据不同的Linux发行版提前装好GNU 工具集和OpenGL开发库。Qt官方网站有介绍在Linux下安装的页面:<br>
<a href="http://doc.qt.io/qt-5/linux.html" target="new">
http://doc.qt.io/qt-5/linux.html </a><br>
下面就依样画葫芦,介绍安装Qt开发环境的过程。 </p>
<div class="os2">1.4.1 安装前准备工作</div>
<p> 对于Linux系统,Qt官方的安装包总是假定C++编译器compiler、调试器debugger、生成器make以及其他开发工具
由该操作系统自己提供,另外构建Qt图形界面程序还需要OpenGL库文件(扩展名为 .a 和 .so)和头文件(扩展名为 .h),
OpenGL的开发库也是需要操作系统自己提供。所以在安装Qt官方run文件之前,必须先安装好Linux系统自己软件源里面
的GNU开发工具集和OpenGL开发库。下面针对三类 Linux 操作系统安装相应的GNU开发工具集和OpenGL开发库,
请注意安装软件都需要root权限,并且要联网安装。 </p>
<p>(1)如果是 Debian/Ubuntu/Deepin (apt-get) 系列操作系统,执行命令:<br>
</p>
<div class="clroot"> sudo apt-get install build-essential libgl1-mesa-dev </div>
<p>(2)如果是 Fedora/RHEL/CentOS (yum) 系列操作系统,执行命令:<br>
</p>
<div class="clroot"> sudo yum groupinstall "C Development Tools and
Libraries" <br>
sudo yum install mesa-libGL-devel </div>
<p>(3)如果是 openSUSE (zypper) 系列操作系统,执行命令:<br>
</p>
<div class="clroot"> sudo zypper install -t pattern devel_basis </div>
<p> 根据不同的操作系统执行相应的命令,完成安装后就可以继续下面的安装了。 </p>
<p><b> 读者请注意一个操作系统版本的问题:因为Linux社区发行版非常活跃,版本更新快(尤其是Ubuntu),经常是半年到一年更新一次,
所以上述命令通常只能在比较新的Linux版本上才能执行成功,旧的Linux版本很可能是Linux发行版官方都不支持了,
因而会导致上面命令执行失败。一般对于活跃的Linux社区,其单个系统版本的生存期是一年到两年左右,安装Qt开发环境之前最好更新到2014年之后发布的Linux版本。 </b></p>
<div class="os2">1.4.2 安装Qt开发环境</div>
<p> Qt安装包下载方式之前说过了,32位Linux安装包为 qt-opensource-linux-x86-5.4.0.run,
64位Linux安装包为 qt-opensource-linux-x64-5.4.0.run。下载的run文件不一定具有可执行权限,
可以执行如下命令开启执行权限(以64位安装包为例):<br>
</p>
<div class="cl">chmod +x /文件夹路径/qt-opensource-linux-x64-5.4.0.run</div>
<br>
将“文件夹路径”替换为自己系统里该run文件路径即可。然后可以直接点击运行该run文件,开始安装。 注意以下是以普通用户权限安装的,安装位置是
/home/用户名/Qt5.4.0/ , 如果希望安装到其他的 如 /opt/ 目录,是需要root权限的。<br>
<br>
下面示范简单的普通用户安装方式,需要用户家目录 /home 所在磁盘分区至少剩余 2 GB 空间,用于安装Qt开发环境。
所示范的是64位安装包,使用的操作系统是 openSUSE Linux 13.2 (64 位),操作系统本地化语言是简体中文。
直接单击运行qt-opensource-linux-x64-5.4.0.run文件,等待run文件自动解压,然后出现如下安装界面:<br>
<center><img src="images/installlin/lin01.png"></center>
<br>
点击“下一步”。进入指定“安装文件夹”界面:<br>
<center><img src="images/installlin/lin02.png"></center>
<br>
默认就会安装到用户主文件夹的Qt5.4.0文件夹里 (上图suse132是当前用户名,/home/suse132/是其主文件夹),不需要修改,
直接点击“下一步”,进入“选择组件”界面:<br>
<center><img src="images/installlin/lin03.png"></center>
<br>
默认情况是不装Qt源代码的,点击下方的“全选”,选中所有组件就会全部安装。 点击“下一步”,进入“许可协议”界面:<br>
<center><img src="images/installlin/lin04.png"></center>
<br>
选择“I have read and agree to the terms contained in the license
agreements.”这一栏, 同意许可协议,然后点击“下一步”,进入“已做好安装准备”界面:<br>
<center><img src="images/installlin/lin05.png"></center>
<br>
如果想查看各个组件详情,可以点击“显示详细信息”。 点击“安装”,就会开始正式的安装过程,时间比较长,请耐心等待。 安装完成时会显示 100% :<br>
<center><img src="images/installlin/lin06.png"></center>
<br>
点击“下一步”,进入“正在完成 Qt 5.4.0 向导”界面:<br>
<center><img src="images/installlin/lin07.png"></center>
<br>
点击“完成”,会自动打开集成开发环境 Qt Creator。<br>
<br>
如果将Linux下安装和Windows下安装对比一下,可以发现Linux下没有关于“开始菜单快捷方式”的设置。 那么下次上哪里找 Qt Creator
呢?<br>
Qt 开发环境安装时会创建一个 Qt Creator 快捷方式文件,然后会呈现在 Linux 的开始菜单里面,
打开“开始菜单”-->“应用程序”-->“开发”-->“集成环境”-->“The IDE of choice for Qt
development.”, 可以看到 Qt 的图标,如下图所示:<br>
<center><img src="images/installlin/lin08.png"></center>
<br>
以后点击该工具就可以进行Qt开发了。该图标对应的快捷方式文件位于:用户主文件夹/.local/share/applications/,
(.local是隐藏文件夹,默认看不到,KDE 文件管理器里按快捷键 Ctrl + . ,即 Ctrl 和点号,对于 GNOME 文件管理器里按快捷键
Ctrl + H,就可以切换是否显示隐藏文件) 快捷方式文件名是 DigiaQt-qtcreator-community.desktop ,如下图所示:<br>
<center><img src="images/installlin/lin09.png"></center>
<br>
为方便使用 Qt Creator,可以右击复制该文件,然后粘贴到桌面文件夹或者主文件夹里使用, 点击该快捷方式文件就会打开 Qt Creator 工具。
<p> <b>*中文输入法问题*</b><br>
按照上面安装方式,如果操作系统里的正好是 Fcitx 中文输入法,会出现新安装的 Qt Creator 里不能进行中文输入的问题。解决方法参考:<br>
<a href="http://blog.csdn.net/crazyboy2009/article/details/38537099" target="new">
http://blog.csdn.net/crazyboy2009/article/details/38537099 </a> <br>
该帖子是解决 Ubuntu 里面问题的。对于 openSUSE Linux,安装软件包 fcitx-qt5 , 然后复制 .so 文件:<br>
/usr/lib64/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
<br> (64位系统是/usr/lib64/... ,32位系统是/usr/lib/...), <br>
粘贴一份到目录:<br>
Qt安装目录/Tools/QtCreator/bin/plugins/platforminputcontexts/<br>
再粘贴一份到目录:<br>
Qt安装目录/5.4/gcc_64/plugins/platforminputcontexts/<br>
</p>
<div class="os2">1.4.3 Qt开发环境目录结构</div>
<p> Qt 在 Linux 系统里安装的东西比在 Windows 里的要少一些,因为 Linux 系统自带编译生成工具, 在前面 1.4.1
安装的就是编译生成工具和 Qt 依赖的库文件。在 Linux 系统里 Qt 安装的开发环境大致分为两部分:</p>
<ul>
<li> Qt 类库的路径为 ~/Qt5.4.0/5.4/gcc_64 ; </li>
<li> QtCreator 集成开发环境的路径为 ~/Qt5.4.0/Tools/QtCreator 。 </li>
</ul>
<p> 如果安装了 Qt 类库的源代码,则位于 ~/Qt5.4.0/5.4/Src 目录里面(波浪号 ~ 是指当前用户主文件夹,如用户 suse132
的主文件夹为 /home/suse132)。我们将 Linux 系统里 Qt 安装根的目录树绘制如下:</p>
<center> <img src="images/installlin/installdir.png" alt="INSTALLDIR" width="800">
</center>
安装目录里的结构和 Windows 系统里差不多,Docs 里的是帮助文档,需要 Qt Assistant 来查阅,Examples 是例子代码,最后的
MaintenanceTool 是管理工具,如果是用离线包安装的,那只能用它删除 Qt 开发环境,如果是在线安装方式,还可以用它管理 Qt
开发环境的组件和升级组件。<br>
我们以 Qt 类库的目录 QTDIR 再细分查看,得到下图 Qt 类库根的目录树:<br>
<br>
<center> <img src="images/installlin/qtdir.png" alt="QTDIR" width="800"> </center>
图上面列出的比较有限,主要是让读者熟悉一下 Qt 开发环境,下一小节我们自己编写一个 Qt 命令行脚本。 <br>
<br>
<div class="os2">1.4.4 Qt开发环境脚本</div>
<p> 如果使用集成开发环境 Qt Creator 开发程序,是不需要关心环境变量之类的设置的,
该工具自己会去寻找编译器g++、调试器gdb、生成器make以及系统里的开发库, 所以建议新手使用 Qt Creator ,这样比较无恼。 </p>
<p> 当然,也有不怕一万,就怕万一的。万一需要在命令行里编译 Qt 程序怎么办? 一般 Linux
系统里的编译生成工具和开发库都是不需要配置的,都是放在固定的目录里, 比如64位库文件位于 /usr/lib64/ 。这里讲一些特殊情况, 比如
Linux 系统目录里面有一份 Qt 4.8.6 的开发库, 而我们又在用户目录里面装了新的 Qt 5.4.0
,这时候打开操作系统命令行,执行命令:<br>
</p>
<div class="cl"> qmake -v </div>
<br>
这时候显示的是系统路径里的Qt 4.8.6 版本:<br>
<center><img src="images/installlin/bash01.png"></center>
<br>
如果我们进入新装的 Qt 5.4.0 里面所带的 bin 目录,执行命令:<br>
<div class="cl"> cd ~/Qt5.4.0/5.4/gcc_64/bin/ <br>
./qmake -v </div>
<br>
./ 就是指定当前目录里的qmake程序,这里是属于 Qt 5.4.0 的,所以显示为:<br>
<center><img src="images/installlin/bash02.png"></center>
<br>
问题就来了,如果是使用系统自带的 Qt 4.8.6,那么打开默认命令行就可以编译了,不需要配置。 如果要用我们自己安装的 Qt 5.4.0
,那该如何配置自己定制的命令行来编译程序呢?
<p> 当然是自己编个脚本来配置了。我们在用户主文件夹新建一个文件 qt5env.sh , 用编辑器打开编辑内容,如果是 KDE
桌面环境,该文件内容设置为:<br>
</p>
<div class="code"> export QTDIR=~/Qt5.4.0/5.4/gcc_64<br>
export PATH=~/Qt5.4.0/5.4/gcc_64/bin:$PATH<br>
export LD_LIBRARY_PATH=~/Qt5.4.0/5.4/gcc_64/lib:$LD_LIBRARY_PATH<br>
cd ~ <br>
konsole <br>
</div>
如果是 GNOME 桌面环境,该文件内容设置为:<br>
<div class="code"> export QTDIR=~/Qt5.4.0/5.4/gcc_64<br>
export PATH=~/Qt5.4.0/5.4/gcc_64/bin:$PATH<br>
export LD_LIBRARY_PATH=~/Qt5.4.0/5.4/gcc_64/lib:$LD_LIBRARY_PATH<br>
cd ~ <br>
gnome-terminal <br>
</div>
两种桌面环境的命令行工具名字不一样,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 版本动态链接库。<br>
默认情况下该文件不具有可执行权限,需要执行下面命令使其生效:<br>
<div class="cl"> chmod +x ~/qt5env.sh </div>
<br>
以后就可以点击该脚本启动我们自己定制的命令行了。可以在我们定制的命令行里面尝试逐条运行以下命令看看效果:<br>
<div class="cl"> qmake -v <br>
assistant <br>
designer <br>
linguist <br>
</div>
<p> 还有一个需要注意的问题,上面安装和配置都是同一个用户,比如 suse132, 如果同一主机上其他用户想用该版本 Qt 库, 需要将 QTDIR
、PATH、LD_LIBRARY_PATH 三行里面的波浪线 ~ 替换为安装该 Qt 库的用户主文件夹,比如 /home/suse132 ,
使用绝对路径方式指明 Qt 库的路径( cd ~ 不用变)。 </p>
<div class="os2">1.4.5 其他安装方式</div>
<p> 上面介绍的是安装Qt官方发布的开发环境,还有其他的安装方式。 Linux一般都是自带Qt动态库的,目前使用Qt4系列版本的居多。
Qt5还是比较新的,基于Qt5的KDE5桌面正在开发过程中, KDE5可能不太稳定,目前还没有作为默认Linux桌面使用。
对于不同的Linux发行版,其原生使用的安装包不一样,有rpm系列的, 也有deb系列的,还有其他格式安装包的。因为Qt是开源软件,
大家都可以按照GPL开源协议自己编译发布Qt运行库和开发环境, 所以Linux发行版社区通常会自行编译Qt库和开发工具的源代码,
生成Qt运行库和开发工具的原生安装包(rpm、deb等), 这样用户就可以使用该Linux发行版自家打包的Qt开发环境了。 </p>
<p>
安装Linux发行版自家打包的Qt开发环境一般都很简单,联网之后,一两句命令就可以搞定,而且rpm或deb等安装包会自动配置好开发环境,不需要其他操
作,即装即用。 比如在openSUSE Linux里面只需要以root用户执行如下两句命令:<br>
</p>
<div class="clroot">zypper in -t pattern devel_qt5 <br>
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 </div>
<br>
等待联网安装完成后就可以在“开始菜单”-->“应用程序”-->“开发”-->“集成环境”里面找到Qt
Creator,点击运行就可以了。 需要注意的是不同Linux发行版在不同时期打包的Qt版本是不一样的,会不断升级,
所以和上面Qt官方的5.4.0版本会有些差异,最好看看相应的发行说明。
<p> 最后补充一个在Mac OS X系统里安装Qt开发环境的链接:<br>
<a href="http://doc.qt.io/qt-5/osx.html" target="new">
http://doc.qt.io/qt-5/osx.html </a> </p>
<br>
<br>
<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="width: 40%;">
<div style="text-align: center;"><a href="ch01-03.htm"><img class="pic"
style="width: 32px; height: 32px;" alt="prev" src="images/pics/prev.png"></a></div>
</td>
<td style="width: 20%;">
<div style="text-align: center;"><a href="contents.htm"><img class="pic"
style="width: 32px; height: 32px;" alt="contents" src="images/pics/contents.png"></a></div>
</td>
<td style="width: 40%;">
<div style="text-align: center;"><a href="ch01-05.htm"><img class="pic"
style="width: 32px; height: 32px;" alt="next" src="images/pics/next.png"></a></div>
</td>
</tr>
</tbody>
</table>
</body>
</html>