下载网址:https://download.qt.io/archive/qt/
在任意空闲位置新建文件夹,并将源码包解压到该目录下。(这里在/home目录下新建名为Qt_source
的文件夹,注:该目录所在位置的空闲空间应大于等于15G
)
在该目录下执行命令:
sudo xz -d qt-everywhere-src-5.15.2.tar.xz
sudo tar -xvf qt-everywhere-src-5.15.2.tar
①安装基础编译环境
执行命令:
sudo apt-get install libxcb-xinerama0-dev
sudo apt-get install build-essential perl python git
②安装编译Libxcb
的相关依赖
执行命令:
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
②安装编译Qt WebKit
的相关依赖
执行命令:
sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
③安装编译Qt WebEngine
的相关依赖
执行命令:
sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison
④安装编译Qt Multimedia
的相关依赖
执行命令:
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
⑤安装编译QDoc
的相关依赖
执行命令:
sudo apt install libclang-6.0-dev llvm-6.0
⑥安装clang-8
sudo apt-get insatll clang-8
⑦安装ninja
#安装ninja编译依赖re2c
sudo apt-get insatll re2c
#编译ninja
cd qt-everywhere-src-5.15.2/qtwebengine/src/3rdparty/ninja
./configure.py --bootstrap
#安装ninja
sudo cp ./ninja /usr/bin
#检查安装是否完成
ninja --version
执行指令:
./configure -prefix /usr/local/Qt-5.15.2 -release -opensource -nomake examples -nomake tests -platform linux-clang -recheck-all
执行./configure 出现:"You don't seem to have 'make' or 'gmake' in your PATH"
sudo apt-get install build-essential
如果还不能解决,手动指定$MAKE
export MAKE=/usr/bin/make
部分参数说明:
-prefix指定安装路径。
-platform选项指定了编译时使用的编译器.
-release在关闭调试的情况下编译和链接Qt。
-opensource Qt的开源版本的编译和链接。
-shared 创建和使用共享Qt库。
-nomake <part> 从要构建的部件列表中排除部分。
-xplatform <spec> 交叉编译的操作系统和编译器。有关支持的操作系统和编译器的列表,请参阅README文件。
-no-iconv不支持iconv
-xcb 使用系统安装的xcb
几分钟后配置检查完毕:
...
...
...
Note: Also available for Linux: linux-clang linux-icc
Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/usr/local/Qt-5.15.2'.
执行命令:
make -j 8
允许8个编译命令同时执行,提高编译效率
特别注意(关键!!!)
执行make -j 8
指令的时候,会出现ninja: build stopped: subcommand failed
,此时编译工作会被终止,其实这是一种正常现象,是由于linux进程的限制而不能继续执行。该命令终止于Makefile.gn_run
中。解决如下:
首先,拷贝Makefile.gn_run
中的ninja
编译指令(此处的路径应为qt源码
路径):
ninja -v -C /home/gwi/test/qt-everywhere-src-5.15.2/qtwebengine/src/core/release QtWebEngineCore
接着,在qt-everywhere-src-5.15.2
编写一个shell脚本
(此处的示例脚本名为auto.sh
,内容如下:
#!/bin/bash
i=0
times=30000
while [ $i -le $times ]
do
let i++
ninja -v -C /home/gwi/test/qt-everywhere-src-5.15.2/qtwebengine/src/core/release QtWebEngineCore
done
修改该脚本的权限
sudo chmod 777 auto.sh
执行该脚本,直到剩余文件数不再发生变化,按照提示修改相应文件的内容,如:
编译进程在文件数为[1/605]
的时候循环,文件数不会减少,此时报错信息为源码文件下的一个头文件中,出现了不允许的数据类型转换。找到该文件,修改相应语句。如当前报错句为:
__fp16 fp16 = __fp16(f)
将其修改为(此处修改仅作为测试使用)
__fp16 fp16
再次执行auto.sh
脚本,直到文件数减少为0,使用快捷键ctrl+z
结束脚本的运行即可。
等待编译结束,执行命令:
sudo make install
Qt会安装在指定的目录下,等待指令执行结束,此时,Qt编译安装成功!
执行命令,查看系统中所有的qmake:
qtchooser -l
可查看当前系统中qmake的版本
执行命令,安装qmake
qtchooser -install `qt5.15.2` '/usr/locakl/Qt-5.15.2/bin/qmake'
注:绿色部分是安装的名称,可任意命名(此处命令中不含"`")
红色部分是qmake的绝对路径(此处命令不含" ’ '")
执行命令,设一下环境变量,设置默认qmake为刚才添加的最新版本:
(该处只是添加了临时变量,建议直接添加到环境变量中)
export QT_SELECT=qt-5.15.2
执行命令,查看当前系统应用的qmake版本:、
qmake -v
安装结束!
希望大家批评指正~