
一、准备工作1、下载qt源码包下载网址https://download.qt.io/archive/qt/在任意空闲位置新建文件夹并将源码包解压到该目录下。这里在/home目录下新建名为Qt_source的文件夹注该目录所在位置的空闲空间应大于等于15G在该目录下执行命令sudo xz -d qt-everywhere-src-5.15.2.tar.xzsudo tar -xvf qt-everywhere-src-5.15.2.tar2、安装所依赖的库1、安装基础编译环境sudo apt-get install libxcb-xinerama0-devsudo apt-get install build-essential perl python git2、安装编译Libxcb的相关依赖sudo apt-get install ^libxcb.*-dev libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev3、安装编译Qt WebKit的相关依赖sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby4、安装编译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 bison5、安装编译Qt Multimedia的相关依赖sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev若是报错则安装最新版本sudo apt -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev6、安装编译QDoc的相关依赖sudo apt install libclang-6.0-dev llvm-6.07、安装clang-8sudo apt-get install clangsudo apt-get install clang-88、安装ninja①、安装ninja编译依赖re2csudo apt-get install re2c②、编译ninjacd qt-everywhere-src-5.15.2/qtwebengine/src/3rdparty/ninja./configure.py --bootstrap③、安装ninjasudo cp ./ninja /usr/bin④、检查安装是否完成ninja --version二、编译安装1、输入配置指令和参数回到qt源码目录执行指令普通配置x86,arm:./configure -prefix /usr/local/Qt-5.15.2 -release -opensource -nomake examples -nomake tests -platform linux-clang -recheck-all交叉编译(x86_arm)下载交叉编译器地址https://developer.arm.com/downloads/-/gnu-a修改qtbase/mkspecs/linux-aarch64-gnu-g/qmake.conf 编译器为交叉编译器绝对路径然后执行./configure -prefix /usr/local/Qt-5.15.2-arm -release -opensource -nomake examples -nomake tests -no-opengl -skip qtlocation -xplatform linux-aarch64-gnu-g -recheck-all部分参数说明-prefix指定安装路径。-platform选项指定了编译时使用的编译器.-release在关闭调试的情况下编译和链接Qt。-opensource Qt的开源版本的编译和链接。-shared 创建和使用共享Qt库。-nomake part 从要构建的部件列表中排除部分。-xplatform spec 交叉编译的操作系统和编译器。有关支持的操作系统和编译器的列表请参阅README文件。-no-iconv不支持iconv-xcb 使用系统安装的xcb执行./configure 出现You dont seem to have make or gmake in your PATHsudo apt-get install build-essential如果还不能解决手动指定$MAKEexport MAKE/usr/bin/make几分钟后配置检查完毕Note: Also available for Linux: linux-clang linux-iccNote: 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.2、make make install1编译源码执行命令make -j 8允许8个编译命令同时执行,提高编译效率特别注意(在编译中断时进行以下若未中断则跳过直接到2、安装关键)执行make -j 8 指令的时候会出现ninja: build stopped: subcommand failed此时编译工作会被终止其实这是一种正常现象是由于linux进程的限制而不能继续执行。该命令终止于Makefile.gn_run中。解决如下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/bashi0times30000while [ $i -le $times ]dolet ininja -v -C /home/gwi/test/qt-everywhere-src-5.15.2/qtwebengine/src/core/release QtWebEngineCoredone修改该脚本的权限sudo chmod 777 auto.sh执行该脚本,直到剩余文件数不再发生变化按照提示修改相应文件的内容如编译进程在文件数为[1/605]的时候循环文件数不会减少此时报错信息为源码文件下的一个头文件中出现了不允许的数据类型转换。找到该文件修改相应语句。如当前报错句为__fp16 fp16 __fp16(f)将其修改为(此处修改仅作为测试使用__fp16 fp16再次执行auto.sh脚本直到文件数减少为0使用快捷键ctrlz结束脚本的运行即可。2、安装等待编译结束执行命令sudo make installQt会安装在指定的目录下等待指令执行结束此时Qt编译安装成功3、qtchooser安装qmake在银河麒麟软件商店中下载Qt creator,配置Qt套件kitsQt version路径为/usr/local/Qt-5.15.2/bin/qmake1、查看系统中所有的qmakeqtchooser -l可查看当前系统中qmake的版本2、安装qmakeqtchooser -install qt5.15.2/usr/local/Qt-5.15.2/bin/qmake注绿色部分是安装的名称可任意命名此处命令中不含)红色部分是qmake的绝对路径此处命令不含 ’ )3、设一下环境变量设置默认qmake为刚才添加的最新版本该处只是添加了临时变量建议直接添加到/etc/profile环境变量中export QT_SELECTqt5.15.24、查看当前系统应用的qmake版本、qmake –v安装结束编译完成的文件修改编译工具路径后可用https://download.csdn.net/download/qq_37029793/92833049