第二章 开发环境搭建:QSC安装、IDE配置与目标机环境

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,折腾一整天连个Hello World都跑不起来。今天我就把这几年的经验掰开揉碎,带你一步步搞定QNX的开发环境。

2.1 QNX Software Center (QSC) 安装与配置

QSC是QNX的软件管理工具,说白了就是你的“软件商店”。所有开发工具、BSP包、文档,都得通过它来下载。

2.1.1 获取安装包

你需要先注册一个QNX开发者账号。去QNX官网申请,一般24小时内会收到邮件。我个人习惯用公司邮箱注册,通过率更高。

注意: 我曾经遇到过用个人邮箱注册,等了三天都没回复的情况。后来换公司邮箱,当天就通过了。

2.1.2 安装步骤

  1. 下载QSC安装包(大约200MB)
  2. 双击运行,选择安装路径。我建议不要用默认路径,C盘空间容易爆
  3. 安装完成后,启动QSC,输入账号密码登录
  4. 在Repositories选项卡中,勾选你需要的组件

这里有个小技巧:先勾选QNX Software Development Platform (SDP) 7.0,这是核心开发包。其他的像文档、示例代码,可以后面再补。

2.1.3 配置代理

如果你在公司内网,大概率需要配代理。在QSC的Preferences里找到Network Connections,填上代理地址和端口。嗯,这里要注意:有些代理需要认证,记得勾选“Requires Authentication”

我的经验: 配代理时如果一直报连接超时,试试把HTTPS代理也配上。很多新手只配了HTTP,结果HTTPS的包下不下来。

2.2 QNX Momentics IDE 安装

Momentics IDE是基于Eclipse的集成开发环境。说白了,就是给你写代码、编译、调试用的图形化工具。

2.2.1 通过QSC安装

在QSC里搜索“Momentics”,找到QNX Momentics IDE组件,点击安装。这个过程大概需要10-15分钟,取决于你的网速。

我记得第一次安装时,进度条卡在80%不动了。别慌,这不是死机,是后台在下载GCC交叉编译工具链。喝杯咖啡等一等就好。

2.2.2 手动安装(备选方案)

如果QSC下载太慢,可以试试手动安装:

# 下载离线安装包
wget http://download.qnx.com/.../momentics-7.0-linux.run

# 赋予执行权限
chmod +x momentics-7.0-linux.run

# 运行安装
./momentics-7.0-linux.run
警告: 手动安装需要自己处理依赖关系。我曾经在一台Ubuntu 20.04上装了半天,最后发现缺了libgtk-3-dev。建议还是用QSC安装,省心。

2.2.3 首次启动配置

启动Momentics IDE后,会提示你选择工作空间(Workspace)。我建议单独建一个目录,比如~/qnx_workspace,别跟其他项目混在一起。

然后配置QNX SDK路径:

  1. 点击 Window → Preferences
  2. 选择 QNX → QNX SDK Locations
  3. 添加你的SDP安装路径,比如 C:\QNX700

配置好后,IDE会自动识别QCC编译器。你可以在Project Explorer里右键新建一个QNX C Project,试试能不能编译通过。

2.3 虚拟机与目标机环境搭建

开发QNX程序,你总得有个地方跑代码吧?要么用虚拟机模拟,要么用真实硬件。我两种都常用,看项目阶段。

2.3.1 虚拟机方案(QNX VM)

QNX官方提供了虚拟机镜像,可以直接在VMware或VirtualBox上跑。我个人推荐VMware Workstation,兼容性更好。

搭建步骤:

  1. 从QSC下载QNX SDP 7.0 Virtual Machine Image
  2. 解压后得到一个.vmx文件
  3. 用VMware打开这个文件,启动虚拟机

启动后你会看到一个命令行界面。默认用户名是root,密码为空。嗯,第一次登录记得改密码。

小技巧: 虚拟机默认只有文本模式。如果你想用图形界面,可以安装QNX Graphics Framework。不过说实话,做嵌入式开发,命令行就够了。

2.3.2 目标机方案(真实硬件)

真实硬件调试才是王道。我常用的目标机是Raspberry Pi 4和TI的AM57x开发板。

以RPi4为例,你需要:

  1. 从QSC下载RPi4的BSP包
  2. 用QNX的mkifs工具制作启动镜像
  3. 将镜像写入SD卡

制作启动镜像的命令:

# 进入BSP目录
cd ~/qnx_workspace/bsp-raspberrypi4

# 构建IFS(Initial Program Loader)
make

# 生成的镜像在 output/ifs-raspberrypi4.bin

然后用dd命令写入SD卡:

sudo dd if=output/ifs-raspberrypi4.bin of=/dev/sdb bs=1M
注意: 写SD卡时一定要确认设备号。我曾经手滑写错了,把硬盘给格了...从那以后,我每次都用lsblk先确认三遍。

2.3.3 网络连接与调试

不管是虚拟机还是目标机,你都需要通过网络连接IDE进行调试。

配置步骤:

  1. 在目标机上启动QNX,用ifconfig查看IP地址
  2. 在IDE中创建QNX Target:Window → Show View → QNX System Information
  3. 右键添加新目标,填上IP地址和端口(默认8000)

连接成功后,你可以在IDE里直接上传程序、启动调试。说实话,第一次看到远程调试跑起来的时候,还是挺有成就感的。

2.4 环境验证

环境搭好了,怎么知道对不对?写个Hello World试试:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    printf("Hello QNX!\n");
    return EXIT_SUCCESS;
}

在IDE里编译,然后上传到目标机运行。如果看到输出,恭喜你,环境搭建成功了!

常见问题排查:
  • 编译报错“QCC not found” → 检查SDK路径配置
  • 连接目标机超时 → 检查防火墙,关闭Windows防火墙试试
  • 程序上传失败 → 确认目标机上的qconn服务是否在运行

好了,环境搭建就到这里。下一章我们开始写第一个真正的QNX程序,到时候会用到今天搭好的环境。有什么问题,欢迎在评论区交流。

最后说一句: 搭建环境是基本功,别嫌麻烦。我见过太多人为了省事跳过这一步,结果后面调试时各种报错,反而花了更多时间。一步一个脚印,稳着来。