尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu 20.04 Qt5开发环境完整部署指南:从依赖安装到环境配置

Ubuntu 20.04 Qt5开发环境完整部署指南:从依赖安装到环境配置 1. 项目缘起为什么在Ubuntu 20.04上安装Qt5依然是个“技术活”最近在帮一个刚接触Linux开发的朋友配置环境他需要在Ubuntu 20.04上搭建一个Qt5的开发环境。他上来就问我“现在不都Qt6了吗网上教程那么多照着apt install装一下不就行了” 我笑了笑这正是很多新手甚至一些有经验的开发者容易踩坑的地方。Ubuntu 20.04作为一个长期支持版本其官方仓库里的Qt版本确实比较旧直接安装可能无法满足现代项目的需求比如需要特定版本的Qt库、需要集成OpenSSL进行网络开发或者需要配置交叉编译环境。更常见的是按照某些过时的教程操作后会遇到“could not find the qt5 external dependency”这类令人头疼的依赖错误或者发现Qt Creator无法拖拽文件到UI设计器中。这些问题的根源在于Qt在Linux下的安装远不止一个apt命令那么简单。它涉及到系统库依赖、环境变量配置、构建工具链gcc/g的版本匹配以及如何从官方渠道获取稳定且功能完整的SDK。网络上信息繁杂有的教程只讲在线安装有的只讲离线包但很少把其中的门道、选择背后的逻辑以及安装后如何验证和排错讲透彻。今天我就结合自己多次在Ubuntu 20.04上部署Qt5的经验从头到尾梳理一遍目标是让你装上的不仅是一个“能运行”的Qt而是一个“好用、可控、可调试”的完整开发环境。我们会涵盖从系统准备、安装方式对比、详细步骤到环境配置、常见问题排查的全过程。2. 安装前的战略决策在线包、离线安装器还是源码编译在动手之前我们必须明确一点没有一种“最好”的安装方式只有“最适合”你当前场景的方式。在Ubuntu 20.04上主要有三种途径它们的优缺点和适用场景天差地别。2.1 官方仓库安装最快捷但版本最受限通过apt安装是Linux新手最自然想到的方式。Ubuntu 20.04的官方universe仓库中确实提供了Qt5的相关包。sudo apt update sudo apt install qt5-default qtcreator优点命令简单自动解决依赖与系统集成度最高比如菜单快捷方式。致命缺点版本老旧仓库里的Qt5版本通常停留在5.12或5.15 LTS的早期可能缺少你项目需要的新特性或重要Bug修复。组件不全安装的通常是基础模块像Qt WebEngine、Qt 3D、Qt Charts等许多额外模块需要单独查找和安装依赖关系复杂。难以多版本共存系统路径固定很难在同一台机器上安装多个不同的Qt5版本以满足不同项目需求。结论仅适用于学习最基础的Qt概念、或者开发对Qt版本无严格要求的小工具。对于严肃的项目开发不推荐此方式。2.2 Qt官方离线安装器功能最全控制力最强这是Qt官方推荐的也是绝大多数专业开发者的选择。你需要从 Qt官网 下载对应操作系统的离线安装器。对于Linux就是一个.run文件。优点版本任选从古老的Qt 5.9到最新的Qt 5.15 LTS甚至Qt 6.x都可以在一个安装界面中勾选。组件自定义你可以精确选择需要的模块如Base、WebEngine、Network、SerialPort等和架构x86, arm等。多版本共存可以安装到任意用户目录如~/Qt每个版本独立通过环境变量或IDE配置轻松切换。包含Qt Creator安装器会提供与Qt版本匹配的Qt Creator IDE兼容性最好。包含调试工具如qmake,uic,rcc等全套构建工具。缺点安装包较大几个GB。需要注册Qt账号免费的开源账户即可。需要图形界面或通过--script参数进行非交互式安装对纯命令行服务器环境不太友好。结论这是本文主要推荐和详细讲解的方式适合所有桌面应用开发和需要特定Qt版本的场景。2.3 从源码编译最灵活也最耗时从Git仓库拉取源码自行配置和编译。这通常是嵌入式交叉编译、深度定制Qt库或为特定平台如龙芯移植时的选择。优点绝对的控制权可以裁剪模块、修改源码、应用补丁。缺点耗时极长在普通台式机上编译全部模块可能需要数小时。对系统依赖如libxcbfontconfig等要求严格缺失任何一个都可能导致编译失败。调试和问题定位复杂。结论除非你有明确的定制化需求或进行嵌入式开发否则在桌面开发中应避免此方式它带来的复杂性远大于收益。对于我们大多数人的需求——在Ubuntu 20.04上建立一个可靠、现代的Qt5桌面开发环境——使用Qt官方离线安装器是唯一正确的选择。接下来的所有步骤都将围绕这种方式展开。3. 战前准备系统环境与依赖的夯实很多安装失败的问题其实都出在准备工作没做好。Ubuntu 20.04作为一个发布了一段时间的系统其默认环境可能缺少一些构建或运行Qt所需的库。3.1 更新系统与安装基础编译工具首先确保你的系统是最新的并安装必不可少的开发工具链。这里最重要的就是gcc和g。Ubuntu 20.04默认的gcc版本是9.x这对于Qt5.15 LTS是完全足够的。sudo apt update sudo apt upgrade -y sudo apt install build-essential -ybuild-essential这个元包会自动安装gcc,g,make,libc6-dev等核心工具。安装后务必验证版本gcc --version g --version你应该能看到类似gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0的输出。如果系统里存在多个gcc版本例如你之前尝试过升级gcc需要注意默认版本是否切换成功。可以使用update-alternatives --config gcc来查看和选择。注意有些教程会建议你升级到gcc-10或更高版本。对于Qt5除非你明确需要C17/20的某些新特性否则强烈建议使用系统默认版本。盲目升级编译器可能导致与系统其他库的ABI不兼容引发难以排查的运行时错误。gcc升级后为啥还是旧版本这个热搜词反映的就是版本管理工具update-alternatives没配置好的问题。3.2 安装Qt运行和构建所需的依赖Qt是一个庞大的框架它的某些功能模块如GUI、多媒体、WebEngine依赖于大量的系统库。离线安装器在安装时可能会检查这些依赖如果缺失对应的模块就无法被选中或安装后无法运行。执行以下命令来安装一套比较全面的依赖库。这些库涵盖了从X11窗口系统、OpenGL渲染、多媒体编解码到数据库连接等各个方面sudo apt install -y libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev sudo apt install -y libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev sudo apt install -y libpulse-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev sudo apt install -y libsqlite3-dev libmysqlclient-dev libpq-dev sudo apt install -y libicu-dev libharfbuzz-dev libfontconfig1-dev sudo apt install -y libssl-dev libssl1.1 # OpenSSL开发库对Qt Network模块至关重要 sudo apt install -y mesa-common-dev特别强调libssl-dev如果你开发的程序涉及HTTPS、SSL加密通信等这个包必不可少。否则即使你安装了带SSL支持的Qt在运行时也可能因为找不到对应的系统SSL库而崩溃。这也是解决很多网络相关运行时错误的关键。3.3 处理可能缺失的“小”依赖有些依赖不那么起眼但缺少时会导致奇怪的问题。例如如果系统没有安装libxcb-util一些基于Qt的应用程序可能在启动时界面显示异常。我们可以一并安装sudo apt install -y libxcb-util0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev完成以上步骤后你的系统就已经为迎接Qt5的安装做好了坚实的准备。这步工作做得越扎实后面安装和使用的过程就越顺畅。4. 核心战役使用官方安装器部署Qt5现在进入最核心的安装环节。我们将从下载到配置一步步完成。4.1 下载Qt官方离线安装器打开浏览器访问 Qt 下载页面 。点击“Download the Qt Online Installer”。虽然叫“Online Installer”但它实际上是一个很小的引导程序运行后会下载真正的安装内容。你也可以在页面底部找到“View All Downloads”链接寻找更旧的版本或直接下载完整的离线安装包体积更大。选择适合Linux的安装器通常是一个名为qt-unified-linux-x64-online.run的文件。如果你需要为其他架构如ARM交叉编译可能需要选择不同的版本。下载完成后进入文件所在目录我们需要给它添加执行权限chmod x qt-unified-linux-x64-*.run4.2 以非root用户身份运行安装器一个非常重要的原则永远不要使用sudo来运行Qt安装器应该以你的普通用户身份安装到你的家目录下。这样可以避免权限问题也方便管理。./qt-unified-linux-x64-*.run如果是在无图形界面的服务器上你需要使用--script参数进行静默安装这需要先创建一个脚本文件比较复杂。本文假设你在桌面环境下操作。安装器启动后登录使用你的Qt账户登录没有的话需要注册一个免费的开源账户。设置安装路径这是关键一步我强烈建议使用一个清晰的、独立的路径。例如/home/你的用户名/Qt或者/home/你的用户名/Development/Qt不要安装在/usr/local或/opt下除非你非常清楚如何管理系统的环境变量和链接。选择组件接下来是最重要的组件选择页面。Qt版本在“Qt” - “Qt 5”目录下选择你需要的版本。对于新项目Qt 5.15.2 LTS是一个极其稳定且功能丰富的选择。勾选它。架构对于大多数桌面开发勾选Desktop gcc 64-bit即可。如果你需要开发Android或iOS应用可以勾选对应的套件。额外组件展开你选择的Qt版本你会看到一长列组件。至少勾选以下核心组件Qt Creator这是Qt的官方IDE必选。Qt 5.15.2下的SourcesQt的源代码方便调试时进入Qt内部建议勾选。Qt 5.15.2下的Qt Charts,Qt Data Visualization,Qt WebEngine等根据你的项目需求勾选。开发工具确保Qt Creator和Qt Installer Framework被勾选。同意许可协议然后开始安装。这个过程会持续一段时间取决于你选择的组件数量和网速。安装器会下载所需的文件并解压到指定的安装目录。4.3 安装后的目录结构解析安装完成后进入你设置的安装目录例如~/Qt你会看到类似这样的结构Qt/ ├── Docs/ # Qt 文档 ├── Examples/ # 示例代码 ├── Tools/ # 工具目录 │ ├── QtCreator/ # Qt Creator IDE │ └── ... # 其他工具如qdbus等 └── 5.15.2/ # 具体的Qt版本目录 ├── gcc_64/ # 64位 GCC 编译套件 │ ├── bin/ # qmake, moc, uic, rcc 等工具 │ ├── lib/ # Qt 库文件 (.so) │ └── include/ # 头文件 ├── android/ # Android 套件如果安装了 ├── src/ # Qt 源码如果安装了 └── ...这个结构非常清晰每个版本、每个编译套件都是独立的。gcc_64目录就是我们后续开发要主要打交道的地方。5. 战后整合配置开发环境与验证安装安装完成只是第一步要让系统“认识”这个新安装的Qt还需要进行一些配置。5.1 将Qt工具链加入系统PATH最直接的方法是在你的shell配置文件如~/.bashrc或~/.zshrc末尾添加以下行。假设你的安装路径是~/Qt/5.15.2/gcc_64。export PATH$HOME/Qt/5.15.2/gcc_64/bin:$PATH export LD_LIBRARY_PATH$HOME/Qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH第一行将Qt的bin目录包含qmake,moc等添加到PATH环境变量的最前面。这样在终端中可以直接调用这些命令。第二行将Qt的lib目录添加到LD_LIBRARY_PATH。这有助于系统在运行Qt程序时找到动态链接库。注意在生产环境或发布应用时不应依赖LD_LIBRARY_PATH而应采用rpath或打包库的方式。这里仅为开发方便。保存文件后执行source ~/.bashrc使配置生效。现在在终端输入qmake -v你应该能看到正确的Qt版本信息。5.2 配置Qt Creator从应用程序菜单启动Qt Creator或者直接运行~/Qt/Tools/QtCreator/bin/qtcreator。首次运行时Qt Creator通常会尝试自动检测已安装的Qt版本。如果没有自动检测到你需要手动配置打开工具-选项。在左侧选择Kits-Qt Versions。点击“添加”浏览到你安装的Qt版本的qmake路径例如~/Qt/5.15.2/gcc_64/bin/qmake。添加后Qt Creator会自动识别出该Qt版本的名称和路径。接着在Kits标签页下检查或创建一个新的Kit。确保“Qt版本”选择了你刚刚添加的版本“编译器”通常会自动选择系统的GCC如GCC (x86 64bit in /usr/bin)。给这个Kit起个名字比如“Desktop Qt 5.15.2 GCC 64bit”。5.3 创建并运行一个测试项目这是验证安装是否成功的终极步骤。在Qt Creator中点击文件-新建文件或项目。选择Application-Qt Widgets Application。为项目命名并选择路径。在“Kit Selection”页面确保勾选你刚才配置好的Kit如“Desktop Qt 5.15.2 GCC 64bit”。一路点击“下一步”使用默认设置即可。项目创建完成后直接点击左下角的绿色运行按钮或按CtrlR。如果一切顺利你将看到一个空白的Qt窗口应用程序被编译并运行起来。这证明你的Qt开发环境已经完全就绪。5.4 验证拖拽功能与OpenSSL支持针对热搜词中提到的问题我们可以进行专项测试测试UI文件拖拽在Qt Creator中打开项目的.ui文件在Forms文件夹下。尝试从左侧的“Widget Box”中拖拽一个按钮如Push Button到中间的窗体设计区域。如果拖拽成功且属性可编辑则说明Qt Creator的UI设计器插件工作正常。如果失败可能是安装不完整或权限问题可以尝试重新运行安装器确保Qt Creator及其所有子组件都被选中。测试OpenSSL支持创建一个新的控制台项目在.pro文件中加入QT network然后在main.cpp中写入以下测试代码#include QCoreApplication #include QSslSocket #include QDebug int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() OpenSSL支持情况:; qDebug() 编译时支持: QSslSocket::supportsSsl(); qDebug() 运行时版本: QSslSocket::sslLibraryVersionString(); qDebug() 编译时版本: QSslSocket::sslLibraryBuildVersionString(); return 0; }运行程序。如果输出显示编译时支持: true并且有版本号则说明Qt已正确链接到系统的OpenSSL库。如果显示false则你需要检查是否安装了libssl-dev并确认Qt安装时选择了支持SSL的模块。6. 进阶配置与疑难杂症排查即使按照上述步骤操作在实际开发中仍可能遇到一些“坑”。这里集中梳理几个常见问题及其解决方案。6.1 处理“could not find the qt5 external dependency”错误这个错误通常出现在使用CMake构建非Qt项目但该项目又依赖Qt5组件时。错误信息意味着CMake的find_package(Qt5 ...)命令失败了。原因与解决Qt5未安装或路径不对首先确认你已经通过本文推荐的方式安装了Qt5。然后需要告诉CMake去哪里找。有两种方法设置CMAKE_PREFIX_PATH在运行cmake时通过参数指定你的Qt安装路径。例如cmake -DCMAKE_PREFIX_PATH~/Qt/5.15.2/gcc_64 ..设置环境变量QT5DIR在shell中设置export QT5DIR~/Qt/5.15.2/gcc_64有些CMake脚本会识别这个变量。缺少对应的Qt5组件find_package(Qt5 COMPONENTS Core Gui Widgets)如果指定的组件如Widgets在你安装的Qt中不存在也会报错。请通过Qt安装器MaintenanceTool检查并安装缺失的组件。6.2 解决Qt程序无法输入中文的问题这是一个在Linux上使用Qt的经典问题。症状是Qt应用程序的输入框无法切换和输入中文。解决方案安装并配置正确的输入法框架支持。对于Ubuntu 20.04默认的IBus框架需要安装以下开发包并确保Qt编译时启用了ibus支持。sudo apt install ibus libibus-1.0-dev但更关键的是你自己编译的Qt需要带上-ibus参数。如果你使用的是官方安装器安装的预编译版本通常已经包含了IBus支持。如果问题依旧可以尝试在运行程序前设置环境变量export QT_IM_MODULEibus ./your_qt_app或者许多开发者选择使用fcitx输入法框架它通常与Qt的兼容性更好。你可以安装fcitx-frontend-qt5sudo apt install fcitx-frontend-qt5安装后可能需要重启系统或重新登录Qt程序就能正常使用中文输入法了。6.3 多版本Qt的管理与切换如果你安装了多个Qt版本例如5.15.2和6.2如何管理在Qt Creator中管理这是最简单的方式。在工具-选项-Kits-Qt Versions中添加所有版本的qmake路径。然后为每个版本创建不同的Kit。创建新项目时在“Kit Selection”步骤选择对应的Kit即可。在命令行中管理通过环境变量来切换。你可以编写不同的shell脚本在运行前设置PATH和QTDIR等变量。例如创建一个名为use-qt5.15.sh的脚本#!/bin/bash export QTDIR$HOME/Qt/5.15.2/gcc_64 export PATH$QTDIR/bin:$PATH export LD_LIBRARY_PATH$QTDIR/lib:$LD_LIBRARY_PATH echo Switched to Qt 5.15.2需要哪个版本就source哪个脚本。6.4 为特定项目配置OpenSSL交叉编译场景热搜词中提到了qt5 交叉编译带openssl这通常是为嵌入式设备如ARM开发板编译Qt时需要的。在这种情况下你需要为目标设备编译OpenSSL库然后在配置Qt源码时通过-openssl-linked和-I、-L参数指定交叉编译好的OpenSSL头文件和库的路径。这个过程非常复杂涉及到交叉编译工具链如arm-linux-gnueabihf-gcc的设置、Qt源码的配置参数-xplatform linux-arm-gnueabi-g等。它超出了本文“桌面安装”的范围但其核心思想是确保Qt的构建系统能在配置阶段找到目标平台兼容的OpenSSL开发文件。如果你需要进行交叉编译建议查阅Qt官方文档中关于交叉编译的指南并准备好应对大量的依赖库交叉编译工作。7. 性能调优与日常维护建议一个配置好的环境还需要良好的维护才能保持高效和稳定。7.1 磁盘空间清理Qt安装会占用大量磁盘空间动辄几十GB。定期清理不需要的版本和组件可以释放空间。不要手动删除~/Qt目录下的文件夹而是使用Qt安装目录下的MaintenanceTool程序通常位于~/Qt根目录或~/Qt/Tools下。运行它你可以选择“添加或移除组件”来删除旧版本或者“卸载”整个Qt。7.2 保持Qt Creator高效Qt Creator本身是一个功能强大的IDE但也可能因为索引大型项目而变慢。管理索引在工具-选项-C-文件大小中可以设置跳过索引过大的文件。关闭不必要的插件在帮助-关于插件中禁用你不需要的插件如Android支持、QML调试器等。使用预编译头文件PCH对于大型项目在.pro文件中启用预编译头文件可以显著加快编译速度。7.3 备份你的开发环境配置你的Qt Creator设置、项目构建配置、调试器设置等都是宝贵的财富。Qt Creator的配置通常存储在~/.config/QtProject目录下。定期备份这个目录可以在重装系统或更换电脑后快速恢复熟悉的开发环境。经过以上七个部分的详细拆解从战略选择到战术执行从基础安装到深度排错你应该已经在Ubuntu 20.04上建立起了一个坚固、灵活且高效的Qt5开发环境。这个环境不仅能应对当前的项目需求其多版本管理和深度定制的潜力也为未来的复杂任务打下了基础。记住在Linux下进行开发理解工具链和环境配置的原理远比记住几条命令更重要。下次当你再遇到“could not find…”或者拖拽失灵的问题时希望你能从容地根据今天梳理的思路一步步找到问题的根源。
返回列表