目录

1 环境要求

2 安装依赖包

3 下载qt源码

4 安装步骤

5 配置环境变量

6 重启,确认qmake可以调用

7 验证qt程序确实可以编译运行


1 环境要求

我使用win7作为宿主机+vmware14.1.1+ubuntu20.04.6

ubuntu20.04.6(注意是20.04.6,不是20.04)的安装镜像是从ubuntu官网下载的ubuntu-20.04.6-desktop-amd64.iso

2 安装依赖包

安装镜像完毕后,应根据Building Qt 5 from Git - Qt Wiki在ubuntu上安装gcc和g++及相关依赖。

考虑到每一版ubuntu的支持时间都有限,deb源可能过一段时间就找不到了,所以这些依赖的deb包我已经打包上传到了【免费】ubuntu20.04.6的一部分deb包资源-CSDN下载。可以下载后离线安装。

按照下面的次序安装这些deb包:

cd perl
sudo dpkg -i *.deb
cd dpkg-dev
sudo dpkg -i *.deb
cd libdpkg-perl
sudo dpkg -i *.deb
cd build-essen
sudo dpkg -i *.deb
cd git
sudo dpkg -i *.deb
cd libxcb
sudo dpkg -i *.deb
cd libx11-xcb-dev
sudo dpkg -i *.deb
cd libglu1-mesa-dev
sudo dpkg -i *.deb
cd libxrender-dev
sudo dpkg -i *.deb
cd libxi-dev
sudo dpkg -i *.deb
cd libxkbcommon-dev
sudo dpkg -i *.deb
cd libxkbcommon-x11-dev
sudo dpkg -i *.deb

Ubuntu 20.04编译Qt 5.15.3全攻略,Windows取证。_qt-everywhere-opensource-src-5.15.3.tar.xz下载-CSDN博客提出,除了以上deb包之外,还要安装libfontconfig1-dev和 libfreetype6-dev。但是我没有装。而且目前也没发现不装会带来什么问题。

3 下载qt源码

从qt官网下载 qt-everywhere-opensource-src-5.15.3.tar.xz

4 安装步骤

4.1 将下载的qt源码压缩包解压到 /home/用户名/Documents/qt/qt-everywhere-opensource-src-5.15.3

4.2 cd qt-everywhere-opensource-src-5.15.3

4.3 修改代码

解压后,修改qtbase/src/corelib/text/qbytearraymetcher.h,在开头加入#include <limits>,然后才能configure,跳过这步则configure可能会失败

4.4 输入如下指令

./configure -prefix /opt/qt5.15_debug -debug -opensource -platform linux-g++ -make libs -optimized-qmake -pch -qt-libjpeg -qt-zlib -skip qt3d -skip qtcanvas3d -skip qtdeclarative -skip qtquickcontrols2 -skip qtquick3d -skip qtgraphicaleffects -skip qtpurchasing -no-openssl -no-cups -no-glib -no-iconv -nomake examples -nomake tools -skip qtvirtualkeyboard -v 

注意,这里的选项-prefix决定了安装路径是/opt/qt5.15_debug

-debug决定了编译采用debug模式。你也可以选择release

以上配置选项都参考了麒麟系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12-CSDN博客

新增的几个选项:-skip qtcanvas3d -skip qtdeclarative -skip qtquickcontrols2 -skip qtquick3d -skip qtgraphicaleffects放弃了qml的编译。

4.5 执行make -j2

这一步耗时与硬件有关,在surface pro9上,编译三天都编译不完;在carbon x1上大约1小时就结束了。

4.6 执行sudo make install,安装完毕

5 配置环境变量

在 命令行修改~/.profile,给PATH和LD_LIBRARY_PATH变量增加新路径用来调用qmake:

sudo nano ~/.profile

6 重启,确认qmake可以调用

重启系统,在命令行输入

qmake --version

可见,qmake 可以调用

7 验证qt程序确实可以编译运行

写一个最简单的Qt程序:

#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>

int main(int argc, char * arv[])
{
    QApplication app(argc, argv);
    QWidget w;
    w.show();
    return app.exec();
}

利用qmake -project命令生成一个pro文件,然后稍加编辑,得到如下:

######################################################################
# Automatically generated by qmake (3.1) Wed Dec 10 08:07:55 2025
######################################################################

TEMPLATE = app
TARGET = qt
INCLUDEPATH += .
Qt += core gui widgets

LIBS += -L/opt/qt5.15_debug/lib/ -lQt5Widgets

# You can make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# Please consult the documentation of the deprecated API in order to know
# how to port your code away from it.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

# Input
SOURCES += main.cpp

注意,上面要通过LIBS += -L/opt/qt5.15_debug/lib/ -lQt5Widgets来指定Qt5Widgets.so的路径,否则编译失败。

执行:

qmake pro文件名
make

得到一个可执行程序。

运行此程序,得到窗体,说明qt可以运行:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐