当前位置: 首页 > news >正文

Jetson Orin NX上Qt Creator安装踩坑实录:手把手解决libglu1-mesa和libxext6依赖版本冲突

Jetson Orin NX上Qt Creator安装依赖冲突实战指南

在嵌入式开发领域,Jetson Orin NX凭借其强大的AI计算能力和紧凑的尺寸,正成为越来越多开发者的首选平台。而Qt作为跨平台的C++图形用户界面应用程序开发框架,其与Jetson Orin NX的结合为开发者提供了创建丰富交互体验的可能。然而,在实际部署过程中,依赖包版本冲突问题常常让开发者陷入困境,特别是当系统要求特定版本的库文件而Ubuntu仓库中提供的又是不同版本时。

本文将聚焦于Jetson Orin NX(Ubuntu 20.04 LTS)上安装Qt Creator时遇到的libglu1-mesalibxext6两个关键依赖包的版本冲突问题。不同于泛泛而谈的安装教程,我们将深入剖析错误根源,提供可复现的解决方案,并分享在ARM架构设备上进行Qt开发的环境配置技巧。无论您是初次接触Jetson平台,还是经验丰富的嵌入式开发者,都能从本文中找到解决类似依赖问题的思路和方法。

1. 环境准备与问题初现

在开始安装Qt Creator之前,确保您的Jetson Orin NX运行的是Ubuntu 20.04 LTS操作系统,并且已经完成了基本的系统更新:

sudo apt update sudo apt upgrade -y

安装Qt Creator本身是一个简单的过程,只需执行以下命令:

sudo apt-get install qtcreator

然而,真正的挑战出现在安装Qt默认库时。当执行:

sudo apt-get install qt5-default

系统会提示依赖错误,指出需要qtbase5-dev但无法安装。这是Ubuntu包管理系统常见的依赖关系问题,特别是在嵌入式平台上,由于软件仓库的差异,这类问题更为常见。

关键错误信息分析

  • 主错误:Depends: qtbase5-dev but it is not going to be installed
  • 深层原因:qtbase5-dev本身有多个依赖项,其中libglu1-mesalibxext6的版本要求与系统可用版本不匹配

2. libglu1-mesa依赖冲突解决

2.1 错误诊断

直接尝试安装qtbase5-dev会暴露第一个关键依赖问题:

sudo apt-get install qtbase5-dev

系统会提示需要libglu1-mesa-dev,而进一步检查会发现libglu1-mesa包的版本不符合要求。在Ubuntu 20.04的默认仓库中,可能提供了较新版本的libglu1-mesa,而Qt需要的却是特定旧版本。

2.2 版本降级方案

解决这一冲突的关键在于安装特定版本的libglu1-mesa。首先查看可用版本:

apt-cache policy libglu1-mesa

在确认存在所需版本后(通常为9.0.0-2.1build1),执行降级安装:

sudo apt-get install libglu1-mesa=9.0.0-2.1build1

注意:版本降级可能会影响系统中其他依赖该库的软件。如果您的项目中有其他组件依赖更新版本的libglu1-mesa,需要考虑兼容性方案。

2.3 验证安装

安装完成后,可以通过以下命令验证版本是否正确:

dpkg -l | grep libglu1-mesa

正确输出应显示类似:

ii libglu1-mesa:arm64 9.0.0-2.1build1 arm64 Mesa OpenGL utility library (GLU)

3. libxext6依赖冲突解决

3.1 错误诊断

即使解决了libglu1-mesa的问题,再次尝试安装qtbase5-dev时,可能会遇到第二个依赖障碍:

sudo apt-get install qtbase5-dev

这次错误信息指向libxext6包的版本问题。与之前的情况类似,系统仓库中的版本与Qt所需的版本不匹配。

3.2 版本降级方案

同样采用版本降级策略,首先检查可用版本:

apt-cache policy libxext6

然后安装特定版本(通常为2:1.3.3-1):

sudo apt-get install libxext6=2:1.3.3-1

3.3 依赖关系锁定

为防止系统更新自动升级这些关键依赖包,可以使用以下命令锁定它们的版本:

sudo apt-mark hold libglu1-mesa libxext6

这样在执行系统更新时,这些包将保持当前版本不变。

4. Qt环境完整安装与验证

4.1 完成qtbase5-dev安装

解决了两个关键依赖冲突后,现在可以顺利安装qtbase5-dev

sudo apt-get install qtbase5-dev

4.2 安装qt5-default

最后,完成最初的目标——安装Qt默认库:

sudo apt-get install qt5-default

4.3 环境验证

安装完成后,通过以下命令验证Qt环境是否配置正确:

qmake -version

正确输出应显示Qt版本信息,类似:

QMake version 3.1 Using Qt version 5.12.8 in /usr/lib/aarch64-linux-gnu

5. Qt Creator配置与项目测试

5.1 编译器配置

启动Qt Creator后,需要进行适当的编译器配置:

  1. 打开"工具"→"选项"→"Kits"
  2. 确保检测到正确的编译器(通常是GCC for ARM)
  3. 配置Qt版本指向系统安装的Qt(通常位于/usr/lib/aarch64-linux-gnu/qt5)

5.2 创建测试项目

创建一个基本的QWidget应用程序进行验证:

  1. 选择"文件"→"新建文件或项目"→"Application"→"Qt Widgets Application"
  2. 按照向导完成项目创建
  3. 点击"构建"→"运行"

如果看到空白窗口弹出,说明Qt环境已正确配置并能在Jetson Orin NX上运行。

6. 开发环境优化建议

6.1 性能调优

Jetson Orin NX虽然性能强大,但针对Qt开发仍可进行一些优化:

  • 在Qt Creator的"工具"→"选项"→"构建和运行"中,增加并行编译作业数
  • 考虑使用ccache加速编译过程:
sudo apt-get install ccache

6.2 远程开发配置

对于资源密集型项目,可以考虑在更强大的x86主机上开发,然后交叉编译部署到Jetson Orin NX:

  1. 在开发主机上安装Qt Creator和交叉编译工具链
  2. 配置Qt Kit指向交叉编译器
  3. 设置部署选项将生成的可执行文件自动传输到Jetson设备

6.3 调试技巧

在嵌入式设备上调试Qt应用程序时,这些技巧可能有用:

  • 使用gdbserver进行远程调试
  • 在Qt Creator中配置嵌入式设备连接
  • 对于OpenGL相关错误,添加QT_LOGGING_RULES="qt.qpa.*=true"环境变量获取更多诊断信息

7. 常见问题与解决方案

7.1 图形界面显示异常

如果在运行Qt应用时遇到图形显示问题,尝试:

export QT_QUICK_BACKEND=software

或者安装额外的图形驱动:

sudo apt-get install libgl1-mesa-dev

7.2 字体显示问题

解决中文字体或字体大小异常:

sudo apt-get install fonts-noto-cjk

然后在Qt应用代码中明确设置字体:

QFont font; font.setFamily("Noto Sans CJK SC"); font.setPointSize(12); qApp->setFont(font);

7.3 触摸屏支持

对于带有触摸屏的Jetson Orin NX设备,可能需要额外配置:

sudo apt-get install tslib libts-bin

然后在运行Qt应用时指定触摸屏设备:

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1
http://www.jsqmd.com/news/758903/

相关文章:

  • MediaPipe TouchDesigner完整指南:三步实现GPU加速的实时AI视觉特效
  • RPG Maker Decrypter:终极游戏资源解密工具深度解析
  • 3个步骤告别Windows系统卡顿:WinUtil让你的电脑重获新生
  • 教育领域新应用:基于hf_mirrors/ai-gitcode/seamless-m4t-v2-large的多语言学习助手开发
  • m4s-converter:3步解锁B站缓存视频,跨设备播放的终极解决方案
  • 别再只调PI了!手把手教你用Simulink给PMSM速度环搭一个滑模控制器(SMC)
  • 如何快速配置编辑器与IDE插件:idiomatic.js工具链的完整指南
  • 从 API 调用日志看 Taotoken 路由容灾机制的实际运行
  • Python开发者五分钟上手Taotoken调用GPT与国产大模型
  • mirrors/unsloth/llama-3-8b-bnb-4bit容器化:Docker镜像构建与优化完整指南
  • 创业团队如何利用 Taotoken 多模型能力低成本验证产品创意
  • 内容创作团队如何借助 Taotoken 调用不同模型优化文案生成
  • 研华DAQNavi API设计精要:从‘端口’与‘通道’概念理解工业数据采集的编程模型
  • LeRobot机器人AI框架完整指南:从零开始构建智能机器人控制系统
  • 5分钟解锁B站4K会员视频下载:bilibili-downloader深度解密与实战指南
  • 终极指南:如何用Comfy-Photoshop-SD插件将AI绘画无缝融入Photoshop工作流
  • Anno 1800 Mod Loader终极指南:解锁无限游戏自定义可能
  • Vue-Element-Admin中的Promise异步处理:终极请求封装与错误处理指南
  • Win11Debloat终极指南:3分钟打造纯净高效的Windows系统
  • 空间智能与神经渲染技术在三维重建中的应用
  • WarcraftHelper完整指南:5步解决魔兽争霸3现代兼容性问题
  • 观察不同时段调用Taotoken聚合API的响应速度与成功率变化
  • 终极指南:5步掌握AI智能图层分离,轻松将插图转换为专业PSD文件
  • 终极指南:如何使用OpenSpeedy免费开源游戏加速工具突破帧率限制
  • OpenSpeedy终极指南:解锁游戏性能限制的免费开源解决方案
  • WarcraftHelper:终极魔兽争霸III现代兼容解决方案(面向经典游戏爱好者)
  • LongCite-llama3.1-8b最佳实践:企业级长文档智能处理方案
  • 别再只调阈值了!深入理解VTK体绘制与面绘制在CT三维重建中的选择
  • JavaScript 字符串转数值(小数)
  • 3个步骤实现浏览器下载速度终极飞跃:Motrix WebExtension深度配置指南