ubuntu20.04编译qt源码5.15.3
本文介绍了在Win7宿主机环境下使用VMware 14.1.1和Ubuntu 20.04.6系统编译安装Qt5.15.3的完整流程。主要包括:1) 安装Ubuntu 20.04.6系统;2) 离线安装必要的依赖包;3) 下载并解压Qt源码;4) 修改源码文件后配置编译选项(特别指出需跳过QML相关模块);5) 执行make编译和安装;6) 配置环境变量;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 widgetsLIBS += -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可以运行:

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

所有评论(0)