第二章 开发环境搭建:Ubuntu系统安装、交叉编译工具链配置、Qt for Device Creation安装、SSH与ADB调试环境

好,咱们正式开始动手了。这一章,说白了就是给你的开发电脑“武装”起来。我见过不少新手,一上来就急着写代码,结果环境没配好,折腾一整天,代码一行没跑通。嗯,咱们别走这个弯路。

车载HMI开发,跟普通桌面应用不一样。你想想看,你的代码最终要跑在车机那个小小的ARM芯片上,而不是你的大屏幕笔记本。所以,我们需要一套“交叉编译”的环境——在电脑上写代码,编译成车机能识别的指令,再传过去运行。

这一章,我会带你一步步搞定:Ubuntu系统、交叉编译工具链、Qt for Device Creation,还有SSH和ADB调试。都是硬骨头,但啃下来,后面就顺了。

2.1 Ubuntu系统安装:选对版本,少走弯路

我个人习惯用Ubuntu 20.04 LTS。为什么?稳定。我在项目中遇到过,用最新的22.04,结果某个Qt模块死活编译不过,查了两天,发现是库依赖的问题。后来退回20.04,一切正常。所以,听我一句劝,别追新,求稳。

安装要点:

  • 磁盘分区:建议至少留出100GB空间。别问我为什么,你以后装SDK、下载源码、编译,空间很快就满了。
  • 网络配置:最好用有线网络。无线偶尔会断,你下载到一半断了,很崩溃。
  • 换源:安装完第一件事,换国内源。比如清华源、阿里源。不然下载速度会让你怀疑人生。
我的小技巧:安装时选择“最小安装”,别装那些LibreOffice之类的办公软件。省下来的空间,留给开发工具。

2.2 交叉编译工具链配置:让电脑听懂车机的话

交叉编译工具链,说白了就是一个“翻译官”。你的电脑是x86架构,车机通常是ARM架构。没有这个工具链,你编译出来的程序,车机不认识。

配置步骤:

  1. 下载工具链:根据你的车机芯片型号来。比如NXP i.MX系列,就用gcc-arm-xxx。我建议直接从芯片厂商官网下载,别用第三方打包的,容易出问题。
  2. 解压到指定目录:我习惯放在 /opt/toolchains/ 下。这样好管理。
  3. 配置环境变量:编辑 ~/.bashrc,添加:
    export PATH=$PATH:/opt/toolchains/gcc-arm-xxx/bin
    export ARCH=arm
    export CROSS_COMPILE=arm-linux-gnueabihf-
  4. 验证:运行 arm-linux-gnueabihf-gcc --version,看到版本信息就对了。
注意:我曾经遇到过,工具链版本跟内核版本不匹配,编译出来的驱动模块加载不了。所以,一定要确认工具链的版本号,跟车机内核的版本号对应。

2.3 Qt for Device Creation安装:为嵌入式而生

Qt for Device Creation,不是普通的Qt。它专门为嵌入式设备优化,包含了针对ARM架构的库和工具。我刚开始做车载HMI时,直接用桌面版的Qt,结果编译出来的程序,在车机上跑得巨慢。后来换成Device Creation版本,性能直接翻倍。

安装流程:

  • 下载安装包:去Qt官网下载,需要注册账号。选择“Qt for Device Creation”版本。
  • 安装:运行安装程序,选择组件时,一定要勾选你对应的ARM编译器版本。比如“ARM64”或“ARMv7”。
  • 配置Kit:打开Qt Creator,在“工具”->“选项”->“Kits”里,添加一个新的Kit。编译器选择你刚才安装的交叉编译器,Qt版本选择Device Creation的版本。
关键点:配置Kit时,记得设置“Sysroot”。Sysroot就是车机文件系统的根目录。这样Qt才能知道车机上有什么库,避免编译时找不到头文件。

2.4 SSH与ADB调试环境:让电脑和车机“通话”

环境搭好了,怎么把程序传过去?怎么调试?这就靠SSH和ADB了。

SSH(Secure Shell):

  • 用途:远程登录车机,执行命令,传输文件。
  • 配置:车机上需要开启SSH服务。一般开发板默认是开启的。如果没有,用 sudo apt install openssh-server 安装。
  • 连接:在电脑上执行 ssh root@车机IP地址。第一次连接会提示确认指纹,输入yes就行。

ADB(Android Debug Bridge):

  • 用途:如果你的车机是基于Android系统的,ADB就是必备工具。可以安装应用、查看日志、调试。
  • 配置:电脑上安装ADB工具:sudo apt install adb。车机上需要开启开发者模式,并允许USB调试。
  • 连接:用USB线连接车机和电脑,执行 adb devices,看到设备列表就成功了。
我的经验:我习惯用SSH传文件,用ADB看日志。SSH的 scp 命令传大文件很快,ADB的 logcat 可以实时看应用输出,排查问题很方便。

2.5 避坑指南:我踩过的那些坑

嗯,最后分享几个我亲身经历过的坑,你遇到了别慌。

  • 坑一:环境变量没生效。 配置完 ~/.bashrc 后,记得执行 source ~/.bashrc 或者重新打开终端。我刚开始经常忘了这一步,然后一直报“命令找不到”。
  • 坑二:Qt Kit配置错误。 编译时提示“找不到Qt模块”,多半是Kit里的Qt版本没选对,或者Sysroot路径错了。检查一下。
  • 坑三:ADB连接不上。 先确认USB线是不是数据线(有些线只能充电),再确认车机上的USB调试有没有打开。我遇到过,折腾半天,结果是线的问题。

好了,环境搭建就到这里。别嫌麻烦,这一步做好了,后面写代码、编译、调试,都会很顺畅。下一章,我们开始写第一个车载HMI程序——一个简单的仪表盘界面。到时候,你会觉得,今天的一切付出都是值得的。