-
首先确保电脑有gcc g++环境,如果没有,直接指令
安装 gcc: sudo apt-get install gcc
安装g++: sudo apt-get install build-essential
测试环境:
gcc --version(-- ,这是两个 - )
g++ --version图1 gcc g++ 测试结果
-
我安装的Qt5.9.8要求有python2环境,为确保在make的时候不报错。(千万不要卸载python3 ,可能你的桌面有一部分是依赖它包含的包,卸载了再重装会附带很多没有的软件,一个字,累,两个字,心累!!!因为这个重装了一次系统)
可以先测试一下: python -V(大写 -V)
如果没有以下的测试结果:
就运行指令:图2 python2测试结果
-
接下来是Qt开源包下载,官网http://download.qt.io/archive/qt/下载对应的版本就可以了,我下载的是5.9.8。(在所有的包里面,我发现我这个点,5.9.8里面含有opensource的字眼,建议你们下载的包含有这个字眼,避免后面运行程序是platforms出错,链接不到xbc包。如果你们这时候更高版本里面的包,不包含opensource这个名字,也没事,选择对应的版本和平台即可。)
下载对应的包:
图3 下载对应的包
选择single:
图4 选中single
选择含有opensource的包:
图5 选择含有opensource的包
-
下载完毕后,解压对应的包后,进入里面,运行配置前,需要安装两个包,
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
如果不安装的话,会在后面配置出错,接下来就是配置了,
在开源包里面运行该指令:
./configure --prefix=/usr/local/qt-5.9.8 -qt-xcb
–prefix是指定文件夹安装的路径,如果不加的话,是默认路径,-qt-xcb是根据在开源包里面,…/Downloads/qt-everywhere-opensouce-src-5.9.8/qtbase/src/plugins/platforms/xcb/README里面说明了,如果未自己安装相关的xbc包,必须声明使用默认的包,
图6 文档说明
(个人觉得如果加上参数 -static不是多此一举吗,明明是静态编译了,还需要说明吗。)
接下去make就可以了,建议 sudo make 比较好,
make 完了,就 sudo make install .
完毕后,进行环境配置:
sudo vim /etc/profile
export QTDIR=/usr/local/qt-5.9.8
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
你要做的就是把QTDIR换成你的安装路径,放在/etc/profile的最后
source /etc/profile
让环境变量立即生效。
可以同用 echo $QTDIR 测试
同样 qmake -v 会显示版本信息
图7 安装后的测试结果
- 代码测试
#include <QtWidgets/qapplication.h> //关于头文件,有时候必须制定QtWidgets
#include <QtWidgets/qlabel.h>
int main(int argc, char *argv[])
{
//创建一个QApplication实例
QApplication a(argc, argv);
//创建一个label实例,显示英文
QLabel label("Hello Qt");
//改变label大小
label.resize(100,50);
//显示label
label.show();
//进入QApplication事件循环
return a.exec();
}
qmake -project
修改生成的 .pro 文件,在最后加上
QT += widgets
qmake qttest.pro
图8 添加位置
-
最后 make 一下 运行 ./qttest
-
这时候会发现没有字
代码里面明明要显示字的,结果报错了,查阅官方文档,发现qt不在提供字体,于是到qt-5.9.8的安装目录下
图9 源代码
-
在/usr/local/qt-5.9.8/lib下创建文件夹 fonts 把各种字体包放进去就行了
查阅更高版本的安装包后,更新一下前面关于开源的静态编译包的下载说法:所有的dependecies都可以通过对应的 包名/qtbase/src/plugins/platforms/xcb 的 README 里面找到 -qt-xbc 链接到默认的依赖 不需要必须 opensource 字眼,原文如下:
The '-qt-xcb' configure option can be used to get rid of most
xcb- dependencies. Only libxcb will still be linked dynamically, since it
will be most likely be pulled in via other dependencies anyway.This should
allow for binaries that are portable across most modern Linux distributions.