3、开发环境搭建:QNX SDP 7.1安装、QNX Momentics IDE配置、QNX虚拟机镜像制作与启动
好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,QNX的开发环境搭建比Linux要「讲究」一些,没那么随意。但只要你按我的步骤来,半小时内就能跑起来。
我个人习惯把环境分成三层:宿主系统(你用的电脑)、开发工具链(SDP + IDE)、目标运行环境(虚拟机或开发板)。这三层打通了,后面写代码、调试、部署就顺了。
3.1 QNX SDP 7.1 安装
SDP 全称 Software Development Platform,说白了就是 QNX 的 SDK。它包含了编译器、库、头文件、调试工具,还有最重要的——BSP(板级支持包)。
下载与授权
你需要去 QNX 官网(blackberry.qnx.com)注册一个账号。个人学习可以用评估版,功能完整,只是有使用期限。我在项目中遇到过客户买了商业授权但安装时忘了激活,结果编译出来的镜像跑不起来——嗯,这种低级错误我也犯过。
安装步骤(以 Ubuntu 20.04 为例)
- 下载
qnx-sdp-7.1.0-xxx-linux.run文件 - 赋予执行权限:
chmod +x qnx-sdp-7.1.0-xxx-linux.run - 运行安装:
sudo ./qnx-sdp-7.1.0-xxx-linux.run - 选择安装路径,我建议放在
/opt/qnx710,别放 home 目录下,后面权限问题烦得很 - 安装过程中会提示输入 license,评估版选「Evaluate」即可
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386。我曾经在一台新装的 Ubuntu 22.04 上折腾了半小时,就是因为缺了这些 32 位库,安装器直接报段错误。
验证安装
安装完成后,设置环境变量:
export QNX_HOST=/opt/qnx710/host/linux/x86_64
export QNX_TARGET=/opt/qnx710/target/qnx7
export PATH=$QNX_HOST/usr/bin:$PATH
然后试试:qcc --version。如果能看到版本信息,说明装好了。
3.2 QNX Momentics IDE 配置
Momentics IDE 是基于 Eclipse 的,但 QNX 做了深度定制。你想想看,一个 IDE 要同时支持 C/C++ 开发、内核调试、多核跟踪、性能分析,Eclipse 的插件架构确实是最合适的。
安装 IDE
SDP 安装包其实已经包含了 IDE,就在 /opt/qnx710/ide 目录下。直接运行:
/opt/qnx710/ide/qde
第一次启动会让你选择工作空间(workspace)。我建议单独建一个目录,比如 ~/qnx_workspace,别跟其他项目混在一起。
配置交叉编译器
IDE 启动后,需要告诉它你的 SDP 装在哪:
- 菜单栏:Window → Preferences → QNX → QNX SDK Paths
- 点击 Add,选择
/opt/qnx710 - IDE 会自动识别出可用的 target 架构(比如 x86_64、aarch64、armv7 等)
创建第一个 QNX 工程
File → New → QNX Project → QNX C/C++ Project。选一个简单的「Hello World QNX Application」模板。你会看到工程属性里自动关联了 QNX 的库和头文件路径。
编译一下试试:右键工程 → Build Project。如果控制台输出 Build Finished,说明环境通了。
3.3 QNX 虚拟机镜像制作与启动
没有开发板?没关系。QNX 官方提供了虚拟机镜像,你可以在 VMware 或 VirtualBox 上跑。我个人更推荐 VMware,因为它的虚拟网卡和串口模拟更稳定。
获取虚拟机镜像
QNX SDP 安装目录下有个 images 文件夹:
/opt/qnx710/target/qnx7/x86_64/boot/images/
里面有个 qnx7-ifs.img 文件,这就是 QNX 的启动镜像(IFS = Image File System)。
制作可启动的虚拟机磁盘
光有 IFS 还不够,你需要一个完整的磁盘镜像,包含引导加载器和文件系统。QNX 提供了 mkxfs 工具来制作:
# 创建一个 2GB 的磁盘镜像
dd if=/dev/zero of=qnx7_vm.img bs=1M count=2048
# 分区(使用 fdisk 或 parted)
# 创建一个主分区,类型为 FAT32
# 格式化并复制 IFS
mkxfs -t qnx7_vm.img -i /opt/qnx710/target/qnx7/x86_64/boot/images/qnx7-ifs.img
嗯,这里要注意:mkxfs 的参数顺序不能错。我刚开始用的时候把 -i 和 -t 写反了,结果做出来的镜像启动到一半就挂了。
在 VMware 中启动
创建虚拟机时选择「Other Linux 64-bit」,然后:
- 硬盘使用我们刚做的
qnx7_vm.img - 内存建议 512MB 以上
- 网络选 NAT 模式(方便后面调试)
- 串口添加一个,用于输出控制台日志
启动后你会看到 QNX 的启动日志刷刷地滚。如果一切正常,最后会停在 login: 提示符。默认用户名 root,密码为空。
验证网络连通性
进入系统后,执行 ifconfig 查看 IP 地址。然后在宿主机上 ping 一下这个 IP。如果能通,恭喜你——开发环境搭建完成了!
常见问题与避坑
- 虚拟机启动黑屏:检查 IFS 镜像是否完整,或者 VMware 版本是否太新。我遇到过 VMware 17 对 QNX 7.1 的兼容性问题,降级到 16 就好了。
- 网络不通:QNX 默认的网卡驱动可能没加载。在启动参数里加
vmxnet3试试。 - 串口没输出:检查 VMware 的串口设置,要选「使用输出文件」或「使用物理串口」。
好了,环境搭好了。下一章我们开始写第一个 QNX 程序,并且用 Momentics IDE 远程调试它。你想想看,在宿主机上写代码,在虚拟机里跑,还能单步调试——这种感觉,比在 Linux 上开发爽多了。
pci -vvv 命令,看看硬件识别情况。这能帮你快速定位驱动问题,而不是等到后面调试时才发现网卡没认到。