Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】

一、安装 Ubuntu

Virtual Box 版本: 7.0.6 r155176 (Qt5.15.2)

Ubuntu 版本:20.04.6 (amd64, Desktop LiveDVD)

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第1张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第2张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第3张图片

二、安装 QT

# 官方下载
https://download.qt.io/
# 国内镜像下载
https://mirrors.cloud.tencent.com/qt/
https://mirrors-i.tuna.tsinghua.edu.cn

# 参考官方安装文档
https://doc.qt.io/archives/qt-6.0/linux-requirements.html#platform-plugin-dependencies
https://doc.qt.io/archives/qt-6.0/linux-building.html

# 下载 qt6.0
https://mirrors.cloud.tencent.com/qt/archive/qt/6.0/6.0.0/single/qt-everywhere-src-6.0.0.zip

下载后解压,看一下 README 文件指导安装,

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第4张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第5张图片

需要安装环境依赖,

# Perl 5.8 or later => https://www.perl.org/get.html
# Python 2.7 or later
# C++ compiler supporting the C++11 standard

./configure -prefix $PWD/qtbase -opensource -nomake tests
# make -j 4
make
make install 

1、安装 Perl 5.38.0

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第6张图片

wget https://www.cpan.org/src/5.0/perl-5.38.0.tar.gz
tar -zxvf perl-5.38.0.tar.gz
cd perl-5.38.0/
./Configure -des -Dprefix=$HOME/localperl
make test
make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第7张图片

2、安装 gcc

sudo apt install gcc-9 g++-9

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第8张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第9张图片

或者直接安装 GNU 集合,

sudo apt install build-essential

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第10张图片

3、安装 Openssl

# https://www.openssl.org/source/
sudo apt install zlib1g-dev

# https://www.openssl.org/source/openssl-3.0.10.tar.gz
wget https://www.openssl.org/source/openssl-3.0.10.tar.gz
tar -zxvf openssl-3.0.10.tar.gz
cd openssl-3.0.10
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make -j 4
make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第11张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第12张图片

4、安装 python

# 安装依赖
sudo apt install libffi-dev
sudo apt install libgdbm-dev

tar -zxvf Python-3.8.8.tgz
cd Python-3.8.8/
./configure --prefix=/usr/local/python3 --with-ssl 
make -j 4
make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第13张图片

5、安装 QT

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第14张图片

报错,这是不同系统编码格式导致,

bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

解决:重置文件编码,

sudo apt-get install vim
vim configure
:set ff
:set ff=unix

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第15张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第16张图片

报错 cmake: not found ,需要安装 Cmake, 

# https://cmake.org/download/
# 解压
tar -zxvf cmake-3.27.0.tar.gz
# 进入目录
cd cmake-3.27.0
# 安装
./bootstrap && make -j4 && sudo make install

 报错 Could NOT find OpenSSL ,需要安装 OpenSSL 依赖库,

sudo apt-get install libssl-dev

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第17张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第18张图片

Cmake 安装完毕,重新配置 QT ,报错 LLVM and Clang C++ libraries have not been found ,

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第19张图片

# 解决 https://clang.llvm.org/get_started.html

# 安装 git
sudo apt-get install git
# 克隆源代码
#git clone --depth=1 https://github.com/llvm/llvm-project.git
git clone -b llvmorg-15.0.7 https://gitee.com/openeuler/llvm-project.git
# 进入目录
cd llvm-project
# 新建 build 目录
mkdir build 
# 进入 build 目录
cd build
# 配置
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm
# 编译
make
# 安装
sudo make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第20张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第21张图片

安装 LLVM 完毕,重新配置 QT,遇到 OpenGL 报错,

RROR: The OpenGL functionality tests failed!  You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2], QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第22张图片

解决,安装依赖,

sudo apt install libgl1-mesa-dev 
sudo apt install libglu1-mesa-dev

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第23张图片

安装依赖后,要先清除配置缓存后重新配置,配置成功,然后执行编译安装,

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第24张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第25张图片

报错 undefined reference to `typeinfo for clang::ASTConsumer',原因是 LLVM/Clang is built with RTTI disabled by default,

解决:修改 LLVM 配置,重新编译安装 LLVM,

# 配置
cmake -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm
# 开启 RTTI 编译
make -j4 REQUIRES_RTTI=1

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第26张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第27张图片

./configure -prefix $PWD/qtbase -opensource -nomake tests

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第28张图片

# make -j4 可能会报错,编译时切换一下命令
cmake --build . --parallel

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第29张图片

sudo make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第30张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第31张图片

三、安装 QT Creator 

# 下载
wget https://mirrors-i.tuna.tsinghua.edu.cn/qt/official_releases/qtcreator/11.0/11.0.2/qt-creator-opensource-linux-x86_64-11.0.2.run

# 添加执行权限
chmod +x qt-creator-opensource-linux-x86_64-11.0.2.run

# 安装依赖库
sudo apt-get install --assume-yes xfce4 xorg-dev libopencc2 libopencc2-data unzip zip
sudo apt install --reinstall libxcb-xinerama0

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第32张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第33张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第34张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第35张图片

# 指定安装目录
/home/sam/qtcreator-11.0.2

 Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第36张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第37张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第38张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第39张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第40张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第41张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第42张图片

四、简单示例

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第43张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第44张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第45张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第46张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第47张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第48张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第49张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第50张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第51张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第52张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第53张图片

运行,报错找不到插件 "xcb",

qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc.

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第54张图片

开启 Debug 模式,在项目中添加环境变量,

# 配置项目变量
QT_DEBUG_PLUGINS=1

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第55张图片

可以看到,搜索的是 QT 编译源码的目录路径,但实际上,QT Creator 安装目录下是有这个插件库的,尝试配置为 QT Creator 目录下的插件路径,

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第56张图片

# 配置项目变量
QT_QPA_PLATFORM_PLUGIN_PATH=/home/sam/qtcreator-11.0.2/lib/Qt/plugins/platforms

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第57张图片

然而,QT Creator 目录下的插件路径并不生效,

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第58张图片

最后解决方案:安装 XCB 库,

sudo apt install xcb

或者源码编译安装,

# 参考官方文档 https://xcb.freedesktop.org/DevelopersGuide/

# 先安装软件包
sudo apt-get install gcc git make automake autoconf libtool pkg-config libpthread-stubs0-dev libxml2-dev

# 安装依赖库
sudo apt-get install libxcb-util-dev
sudo apt-get install libxau-dev
sudo apt-get install libx11-dev

# 下载
wget https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.15.tar.gz
wget https://xorg.freedesktop.org/archive/individual/lib/libxcb-1.15.tar.gz

# 解压
tar -zxvf xcb-proto-1.15.tar.gz
tar -zxvf libxcb-1.15.tar.gz

# 安装
cd xcb-proto-1.15/
./configure && make && sudo make install

cd libxcb-1.15/
./configure && make && sudo make install

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第59张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第60张图片

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第61张图片

# 默认在系统路径下
/usr/local/include/xcb
/usr/local/lib

配置环境变量,

# 配置环境变量 LD_LIBRARY_PATH
sudo vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/lib
# 使配置生效
source /etc/profile

# 或者注册库
sudo vim /etc/ld.so.conf
# 在底部添加
/usr/local/lib
# 重新加载
sudo /sbin/ldconfig

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第62张图片

重新配置编译 QT,加上参数 -xcb ,不同版本的配置通过 ./configure --help 来配置参数,

# 配置
./configure -prefix $PWD/qtbase -opensource -xcb -nomake tests

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第63张图片

注意,配置信息一定要有 XCB yes 的提示,如果安装了 X11 依赖还是没有 yes,则使用 ninja 编译,

# X11 依赖参考 https://doc.qt.io/archives/qt-6.0/linux-requirements.html#platform-plugin-dependencies

# 使用 ninja
sudo apt install ninja-build

# 重新配置
./configure -prefix $PWD/qtbase -opensource -nomake tests -xcb

# 编译安装
cmake --build . --parallel 4

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第64张图片

最终编译安装之后的插件产物有  libqxcb.so !

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第65张图片

重新编译运行项目,正常启动!

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第66张图片

五、总结

1、安装 Perl 、Python 、C++ compiler、Openssl、Cmake、LLVM、OpenGL 软件包与依赖

2、安装官网文档安装 X11 依赖

Ubuntu20 源码编译安装 QT6.0 教程【有详细图文,亲测可行】_第67张图片

3、安装 XCB、ninja 

4、配置 QT 要有 -xcb 参数

./configure -prefix $PWD/qtbase -opensource -nomake tests -xcb

5、检查配置文件的 QPA 的 XCB 模块是否开启

6、使用 Cmake 编译安装 QT

7、安装 QT Creator ,配置组件 QT 路径

你可能感兴趣的:(禅与QT,禅与运维,ubuntu,linux,运维)