☰
Ubuntu 24.04下QtCreator从安装到调试的完整避坑指南
2026/9/29 11:39:48 网站建设 项目流程

这几天一直在Ubuntu 24.04上修修补补,拿QtCreator当主力IDE搞跨平台项目,前前后后踩了一堆坑,光是“装完打不开”和“Kit检测不到”就折腾了两个晚上。今天把这些整理成一篇完整的问题集合,从安装、启动、编译、调试到中文输入,按实际踩坑的顺序写,让后来的人少走弯路。

先说说这篇文章适合谁:刚装好Ubuntu 24.04 LTS、准备用QtCreator写Qt程序的新手,或者已经装上但遇到启动失败、Kit配不上、中文输入法打不出来、GDB调试不了这些问题的朋友。文章不绕弯子,问题是什么、原因是什么、命令怎么敲,直接照着做就行。

1. 环境准备与安装避坑

1.1 装好Ubuntu 24.04之后先别急着装QtCreator

Ubuntu 24.04 LTS(Noble Numbat)默认带的是GCC 13.2、CMake 3.28、Python 3.12,系统库整体比较新。这本身是好事,但对刚接触Linux的人来说,第一反应往往是“sudo apt install qtcreator”一把梭。咱们先别急,把基础编译环境准备好,后面会省很多事。

依次执行下面几条命令:

sudo apt update sudo apt upgrade -y sudo apt install -y build-essential cmake ninja-build gdb

build-essential 包含 gcc、g++、make,这是编译C/C++的底子;cmake 和 ninja-build 是Qt 6项目默认的构建工具;gdb 是调试器,后面调代码离不开它。如果你之前是双系统安装的Ubuntu 24.04,建议装系统时分区时把根分区和 /home 分开,根分区给50到80G就够,/home 放剩余空间。QtCreator的编译缓存默认写在家目录下的 .cache 和项目构建目录里,项目多了吃几十个G很正常,分区不合理后面很被动。

另外,如果你的机器是Nvidia显卡(不少朋友问过L40驱动的问题),建议先把显卡驱动装好再动QtCreator,因为QtCreator的欢迎页、OpenGL窗口渲染都依赖图形栈。用sudo ubuntu-drivers autoinstall或者手动sudo apt install nvidia-driver-550都行。驱动没装好的话,后面大概率会遇到 “Could not initialize OpenGL” 这种报错,到时就分不清是Qt问题还是驱动问题了。

1.2 QtCreator的三种安装方式,挑哪种

我把常用的安装方式摊开对比一下:

安装方式命令/操作版本适用场景
apt仓库sudo apt install qtcreator中等,非最新新手、纯快速使用
官方在线安装器从qt.io下载qt-unified-linux-x64-online.run最新想要最新特性、自带Qt库
Snap商店snap install qtcreator最新不想折腾依赖,接受沙箱限制

我个人最推荐官方在线安装器。它会把QtCreator和Qt 6.x的库一起装到 ~/Qt 目录下,版本号统一,后面配置Kit时不容易出幺蛾子。apt版本装起来无脑,但仓库里的QtCreator版本和系统自带的Qt库版本经常对不上,遇到“Qt版本与Creator不匹配”的警告是家常便饭,有些新出的CMake工程特性在老版本上还会报错。

官方安装器的用法很简单:

wget https://mirrors.aliyun.com/qt/official_releases/online_installers/qt-unified-linux-x64-online.run chmod +x qt-unified-linux-x64-online.run ./qt-unified-linux-x64-online.run

下载慢可以换国内镜像源。安装时需要注册一个免费的Qt账号,组件至少勾选对应版本的 gcc_64 套件和QtCreator本体,其他组件按需再加。Snap版我测下来有个烦人的地方:默认跑在沙箱里,访问 ~/Qt 或者其他自定义路径时要手动授权,对搞嵌入式、做交叉编译的人来说非常不友好,所以不做首选。

1.3 装完双击没反应,第一个大坑

无论用哪种方式装完,第一次双击启动图标时,都有很高的概率什么都没发生。这时候别反复点,打开终端直接运行:

qtcreator

真正的报错会打印在终端里。我在Ubuntu 24.04上碰到最多的是这一条:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found

或者这一条:

error while loading shared libraries: libxcb-cursor.so.0: cannot open shared object file

这两个其实是同一类问题:Qt 6.5之后的版本在Linux上新增了对 libxcb-cursor0 的依赖,而Ubuntu 24.04的纯净系统默认不装这个库。解决办法就一行:

sudo apt install -y libxcb-cursor0

为了保险,我习惯把Qt官方文档里提到的xcb相关依赖一次性补全:

sudo apt install -y libxcb-cursor0 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-shape0 libxcb-xinerama0

装完再执行qtcreator,基本就能进主界面了。这里强烈建议养成一个习惯:QtCreator出问题时永远用命令行启动,别双击图标。终端里的错误信息比任何日志文件都直观。

2. 启动与显示相关的坑

2.1 图形平台插件加载失败的分析

上面那条 “Could not load the Qt platform plugin xcb” 虽然常见,但原因不止一个。Qt在Linux下是通过插件机制加载窗口系统后端的,xcb插件就是X11的后端,Wayland下对应的是wayland插件。插件文件本身找到了,但加载失败,绝大多数是它依赖的动态库缺失。

排查方式很标准:先定位插件目录,再用 ldd 看依赖。用apt装的QtCreator,插件在 /usr/lib/x86_64-linux-gnu/qt6/plugins/platforms/ 目录下;官方安装器装的则在 ~/Qt/版本号/gcc_64/plugins/platforms/ 下面。加载失败时终端通常会直接提示缺哪个库,顺着把包补上就行。查不出来就用apt-file search 库名反查归属:

sudo apt install -y apt-file sudo apt-file update apt-file search libxcb-cursor.so.0

这个工具解决了我无数次“缺库不知道装哪个包”的痛点。任何.so文件找不到,只要搜索文件名,就能反查到它属于哪个安装包,一装一个准。

2.2 Wayland和X11,到底用哪个更省心

Ubuntu 24.04 默认登录会话是Wayland。QtCreator 13及以上在Wayland下基本能正常用,但有几个衍生问题:部分显卡驱动不兼容、远程桌面工具(ToDesk、TeamViewer这类)在Wayland下抓不到画面、以及中文输入法在Wayland下偶尔失效。

最省事的兜底方案是强制QtCreator走X11协议:

export QT_QPA_PLATFORM=xcb qtcreator

想永久生效,就在 ~/.profile 里加一行export QT_QPA_PLATFORM=xcb。不过要注意,这个环境变量会把系统上其他Qt程序(比如KDE系应用)也拖到X11下去,影响面比较大。更精细的做法是只对QtCreator生效,写个启动脚本:

#!/bin/bash export QT_QPA_PLATFORM=xcb exec /usr/bin/qtcreator "$@"

或者用命令行参数qtcreator -platform xcb。我现在的习惯是:日常在Wayland下用,遇到输入法打不出来或需要远程共享屏幕时,再切到xcb。这样兼顾正常体验和应急场景。

2.3 OpenGL渲染出错和显卡驱动

另一个高频启动问题是终端里出现:

Could not initialize OpenGL

这跟QtCreator本身的代码没太大关系,主要是显卡驱动没到位。Ubuntu 24.04对Nvidia新显卡默认走nouveau开源驱动,跑桌面OpenGL经常翻车。先执行glxinfo | grep "OpenGL renderer"看看当前渲染器是什么,如果是 nouveau 或者 llvmpipe,说明驱动没装对。

装Nvidia官方驱动:

sudo ubuntu-drivers autoinstall sudo reboot

装完确认nvidia-smi能正常输出。如果显卡太老装不上新驱动,或者装完还是不稳定,可以给QtCreator开软件渲染兜底:

export QT_OPENGL=software

渲染效率会低一些,但写代码、调界面完全够用。这里有一个实际遇到的教训:驱动装到一半系统更新,折腾半天黑屏,最后进恢复模式卸载驱动重装才解决。所以驱动相关操作最好一次性做完,别让系统更新插队。

3. Kit、编译与构建的坑

3.1 Kit自动检测不到,Qt版本怎么手动配

进入QtCreator主界面后,第一件事是配置Kit。新建项目时如果提示 “No suitable kits found”,先别怀疑人生,99%是编译器、Qt版本、CMake三个组件缺了某一个。

先确认基础环境:

gcc --version g++ --version cmake --version

如果提示找不到命令,回到第1.1节把 build-essential 和 cmake 装上。接着打开 工具 → 选项 → Kits,分三步检查:

  • 编译器列表里应该能看到GCC;没有就点“添加 → GCC → C/C++”,手工指定 gcc 和 g++ 路径,一般是 /usr/bin/gcc 和 /usr/bin/g++。
  • Qt Versions 里应该有系统自动检测到的qmake;用官方安装器装的话,需要手动添加:点“添加”→ 选择 ~/Qt/6.5.3/gcc_64/bin/qmake,版本号按实际填。它会自动识别Qt版本和厂商。
  • CMake 确认路径指向 /usr/bin/cmake。

都齐了之后,到 Kits 标签页选中对应Kit,确认“Qt version”下拉框选对了版本,编译器也对应上,点OK保存。新建项目时就能看到这个Kit了。

为什么官方安装器装的Qt经常不被自动检测?因为QtCreator默认只扫描 /usr/bin、/opt 等系统目录,而 ~/Qt 在用户家目录下,自动检测逻辑出于性能考虑不会全盘扫描,所以必须手动加一次。很多人卡在这一步,以为是安装没成功,其实是路径没告诉QtCreator。

3.2 编译报错的经典套路:Unknown module

Kit配好,新建了Qt Widgets项目,一编译直接报:

Project ERROR: Unknown module(s) in QT: charts

这个报错的意思是:代码里QT += charts引用了某个Qt模块,但系统里没装对应的开发包。Qt 6 的模块包名和 Qt 5 不一样,Ubuntu仓库里的命名规律也不同:

代码里的模块Qt 5 开发包Qt 6 开发包
chartslibqt5charts5-devqt6-charts-dev
serialportlibqt5serialport5-devqt6-serialport-dev
multimediaqtmultimedia5-devqt6-multimedia-dev
svglibqt5svg5-devqt6-svg-dev
sqlqtbase5-devqt6-base-dev
declarativeqtdeclarative5-devqt6-declarative-dev

装的时候按对应版本选包:

sudo apt install -y qt6-charts-dev qt6-serialport-dev qt6-multimedia-dev

还有一类经典报错是链接阶段找不到OpenGL:

cannot find -lGL

这是缺OpenGL开发库,装:

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

我实际项目里还碰到过Qt5.svg找不到的情况,原因是Qt 5的svg模块包叫 libqt5svg5-dev,和Qt6的命名规律完全不同,很多人习惯性用tab补全就装错了。装之前用apt-cache search qt6-svg搜一下准确包名,比猜稳得多。

3.3 CMake版本和构建目录的细节

Ubuntu 24.04自带的CMake是3.28,对Qt 6.x来说完全够用。但如果你用的是QtCreator自带的CMake或者某个老路径下的版本,可能会看到:

CMake 3.16 or higher is required. You are running version 3.10.2

这种就是路径配错了,QtCreator把系统里某个旧的CMake当成了默认值。到 工具 → 选项 → Kits → CMake 里,把路径改回 /usr/bin/cmake,或者点“自动检测”。

另一个构建相关的坑和中文路径有关。项目路径、构建目录里如果带了中文名或空格,QtCreator的增量编译偶尔会冒出莫名其妙的文件找不到错误,尤其是qmake项目。解决办法很朴素:项目放在纯英文路径下,比如 /home/你的用户名/code/MyProject。这不是玄学,历史版本里确实存在对非ASCII路径支持不完善的问题,与其等官方修,不如一开始就绕开。

QML调试这个功能也常被问:很多Qt版本把“启用QML调试”和性能采集做成了一组选项,必须在Kit的“Qt Quick”配置里显式勾选,否则 *.qml 文件里的断点打不上。如果发现QML断点失效,先查Kit设置,再查项目构建设置里是不是选的Debug版。

4. 编辑器体验:中文输入法与字体

4.1 搜狗输入法和fcitx的配置

很多国内用户习惯搜狗输入法,但搜狗对Wayland和Ubuntu 24.04的支持一直不太跟得上,候选框消失、无法跟随光标是高频投诉。想省心的话,直接换fcitx5配合系统自带pinyin,日常打字体感差距不大。

安装:

sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-frontend-qt5 fcitx5-frontend-gtk3

关键在环境变量,必须告诉Qt程序输入法模块是谁:

export QT_IM_MODULE=fcitx export GTK_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx

建议把这三行写进 /etc/environment,重启后全局生效。别忘了执行im-config -n fcitx5把fcitx5设为默认输入法框架,并在系统设置里把fcitx5加到自启动。如果是在Wayland会话下,fcitx5本身也要以Wayland模式运行,否则QtCreator里依然打不出中文。

坚持用搜狗的话,Ubuntu 24.04上至少要装搜狗官方的deb包,并且最好把会话切到X11。实测下来fcitx5在QtCreator里无论Wayland还是X11都挺稳,所以我现在主力就是fcitx5,搜狗只留在Windows上用。省下的那些折腾时间,多写两个功能不香吗。

4.2 高DPI模糊和字体渲染

用4K屏或者笔记本高分屏打开QtCreator,界面糊得没法看,是高频问题之一。首先确保 工具 → 选项 → 环境 → High DPI 里勾选了 “Enable High DPI scaling”。如果还是模糊,在启动脚本里加:

export QT_SCALE_FACTOR=2

数值按屏幕实际缩放比例调,1.5、1.75都行。也可以用QT_AUTO_SCREEN_SCALE_FACTOR=1让系统自动判断。我这边2K屏设成1.5之后,代码区和小图标都清晰了。

中文字体发虚或者干脆缺字,一般是没装中文字体包。Ubuntu 24.04服务器版或精简安装的系统,连CJK字体都没有,代码注释里的中文全变方块:

sudo apt install -y fonts-noto-cjk

装完重启QtCreator,中文注释就正常了。编辑器字体我推荐 Noto Sans Mono CJK SC 或者 JetBrains Mono,兼顾中文和代码的阅读体验。

5. 调试器的排查

5.1 GDB附加进程失败和ptrace权限

调试是QtCreator的核心功能,但很多人第一次按F5就会看到:

Could not attach to process. ptrace: Operation not permitted

这不是QtCreator的问题,是Linux内核的kernel.yama.ptrace_scope安全机制。出于防注入的考虑,Ubuntu默认只允许父进程调试子进程,而QtCreator作为独立进程去attach一个已运行的程序,就会被拒。

临时放开:

sudo sysctl -w kernel.yama.ptrace_scope=0

想永久生效,写进配置文件:

echo 'kernel.yama.ptrace_scope=0' | sudo tee /etc/sysctl.d/10-ptrace.conf sudo sysctl --system

注意,把 ptrace_scope 设为0意味着系统里任意用户都能调试属于你的进程,在共享服务器上要谨慎。自己的开发机无所谓,公司跳板机就别动这个。

顺带说一个排查技巧:如果按F5直接闪退或根本没弹调试窗口,先检查有没有装gdb,gdb --version验证,没有就sudo apt install gdb。Ubuntu 24.04仓库里是GDB 15.x,和QtCreator的兼容性没有大问题。

5.2 调试器选型与符号文件

除了GDB,QtCreator也支持LLDB,想体验更现代化的命令行调试器可以装:

sudo apt install -y lldb

然后在 工具 → 选项 → Kits → Debugger 里给对应Kit选择LLDB。LLDB对C++新特性的支持更跟得上,缺点是部分嵌入式交叉调试场景不如GDB成熟。做桌面Qt开发的话,GDB为主、LLDB备用就够了。

还有一类调试问题报“错误:无法加载符号文件”,多半是项目目录里有中文路径,或者Qt库的调试符号包没装。前者改路径,后者装对应开发包即可解决。说到底,调试器报错八成是环境问题,先把环境理干净再谈代码。

6. 高频问题速查表

6.1 问题现象、原因、解决方案一览

怕大家翻来翻去,我把这段时间遇到的高频问题整理成速查表:

现象根本原因一句话解决
双击启动毫无反应缺xcb依赖库sudo apt install libxcb-cursor0
启动报Could not load xcbQt插件依赖缺失补全libxcb-*全家桶
报Could not initialize OpenGLNvidia驱动没装好ubuntu-drivers autoinstall
新建项目无可用Kit编译器/Qt/CMake缺一装build-essential并手动加Qt路径
编译报Unknown module缺对应模块开发包apt-cache search定位包名后安装
链接报cannot find -lGL缺OpenGL开发库apt install libgl1-mesa-dev
中文输入法打不出环境变量或Wayland不兼容设置IM相关变量,或切xcb
界面字体模糊高DPI未开启选项里开启High DPI scaling
调试attach被拒ptrace权限限制关闭ptrace_scope
QML断点无效Kit未启用QML调试Kit设置里勾选QML调试
项目路径含中文编译报错非ASCII路径兼容问题项目放纯英文路径

6.2 诊断QtCreator问题的几个常用命令

新手排查QtCreator问题时最大的障碍是不知道用什么命令。把最常用的几条列出来,都是实际验证过的:

# 查看关键动态库是否缺失 ldd /usr/bin/qtcreator | grep "not found" # 定位某个动态库属于哪个软件包 apt-file search libxcb-cursor.so.0 # 查看当前OpenGL渲染器 glxinfo | grep "OpenGL renderer" # 查看本机Qt版本 qmake --version # 查看编译器版本 gcc --version # 查看某个qt6模块是否已安装 dpkg -l | grep qt6-charts

这套命令不仅解决QtCreator的问题,排查任何Linux下GUI程序“启动失败、缺库”的问题都通用。先看 ldd 有没有not found,再看 glxinfo 渲染器对不对,最后看版本是否匹配,三步走完,大部分问题都能定位。

6.3 启动卡死、更新后异常的处理

还有一类问题:QtCreator能启动,但启动特别慢,或者升级之后界面变成默认风格、快捷键全失效。前者多半是Clang代码模型在索引整个项目树,项目大了索引几分钟很正常。到 工具 → 选项 → C++ → Code Model 里取消不必要的索引,或者把不常用项目移出会话,启动速度立竿见影。

后者一般是配置缓存和插件冲突。QtCreator的配置都存在 ~/.config/QtProject 目录下,插件状态在 ~/.config/QtProject/qtcreator/plugins。升级大版本后出现异常,先把整个 QtProject 目录改名备份,再启动QtCreator,等于做了一次“恢复出厂设置”,十次有九次能把问题治好,而且完全不会动到你的代码。

如果连启动都卡死,大概率是某个第三方插件不兼容。QtCreator支持插件加载开关,命令行加-noload 插件名可以跳过加载,逐个排查到问题插件再移除即可。我在24.04上就碰到过一个老的格式化插件导致启动卡死,卸载之后一切正常。

7. 写在最后的一点经验

QtCreator在Ubuntu 24.04上整体是稳定的,那些让人抓狂的报错,绝大多数不是软件本身的问题,而是系统依赖和图形栈的兼容性。个人建议:不要迷信单一解决方案,先把环境变量整明白,再把动态库依赖查清楚,实在不行就在命令行里把QtCreator跑起来,让它亲口告诉你哪里错了,这比在网上翻帖子都管用。

最后分享一个踩坑之后养成的习惯:每次大版本升级QtCreator前,先备份 ~/.config/QtProject 整个目录,再备份 ~/.qtcreator 下的用户配置。升级之后如果样式错乱或设置丢失,直接把备份拷回去,十分钟恢复正常。这套组合拳帮我省掉了无数次重装系统的冲动。希望这篇问题集合能帮你在24.04上少走几个弯。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询