第2章:开发环境搭建——QNX Momentics IDE的安装、QNX SDK的配置、虚拟机与目标板的连接

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

2.1 QNX Momentics IDE的安装

QNX Momentics IDE,说白了就是QNX的“大本营”。你写代码、编译、调试,基本都离不开它。它基于Eclipse,但做了大量定制。

安装前的准备:

  • 一台Windows或Linux主机(我个人推荐Ubuntu 18.04/20.04,兼容性最好)
  • 至少8GB内存,20GB空闲磁盘
  • QNX Software Center账号(去官网注册,免费的)

安装步骤:

  1. 从QNX官网下载Momentics IDE安装包(大约1.2GB)
  2. 双击运行安装程序,选择安装路径。嗯,这里要注意:路径不要带中文和空格,否则后面编译会报一些莫名其妙的错。
  3. 选择组件时,我建议全选。虽然占点空间,但省得后面缺东西再补。
  4. 等待安装完成,大概10-15分钟。
我的小技巧:安装完成后,先别急着打开IDE。去安装目录下找到 qnxconfig.sh 文件,用文本编辑器打开,把 QNX_TARGETQNX_HOST 的环境变量路径确认一下。我曾经遇到过路径指向了旧版本,结果编译时死活找不到头文件。

2.2 QNX SDK的配置

SDK配置是重头戏。很多人装完IDE就以为完事了,结果一编译就报错——说白了就是SDK没配好。

SDK是什么?它包含了编译器、链接器、库文件、头文件等。没有它,你的代码就是一堆文本。

配置步骤:

  1. 打开QNX Software Center,登录你的账号
  2. 在“Available Software”里找到你需要的SDK版本。比如QNX 7.0或7.1,看你目标板支持哪个。
  3. 选择对应的BSP(Board Support Package)。比如你用的是Raspberry Pi 4,就选对应的BSP。
  4. 点击安装,等待下载完成。

重要:安装完成后,一定要检查环境变量。打开终端,输入:

source /opt/qnx700/qnxsdp-env.sh
echo $QNX_TARGET
echo $QNX_HOST

如果输出的是正确的路径,说明配置成功。如果为空,嗯,那你得手动加一下环境变量。

我个人习惯把SDK的路径加到 .bashrc 里,这样每次打开终端就不用重新source了:

echo "source /opt/qnx700/qnxsdp-env.sh" >> ~/.bashrc
source ~/.bashrc

2.3 虚拟机与目标板的连接

这一步是很多人的噩梦。你想想看,代码写好了,怎么跑到目标板上?怎么调试?怎么看到输出?

方案一:用QNX虚拟机(适合学习阶段)

如果你手头没有物理板子,可以用虚拟机。QNX官方提供了QNX Neutrino的虚拟机镜像。

  1. 下载QNX Neutrino的ISO镜像或VMware镜像
  2. 在VMware或VirtualBox中创建新虚拟机,选择QNX作为操作系统类型
  3. 分配至少1GB内存,2个CPU核心
  4. 启动虚拟机,你会看到QNX的启动日志

方案二:连接物理目标板(推荐)

我建议有条件的话还是用物理板子。虚拟机和真实硬件还是有差距的,尤其是驱动开发和实时性测试。

连接步骤:

  1. 用网线把目标板和主机连到同一个路由器或交换机上
  2. 给目标板设置静态IP。比如:192.168.1.100
  3. 在主机上打开终端,测试连通性:ping 192.168.1.100
  4. 如果ping不通,检查防火墙和网线。我曾经被一根坏网线坑了整整一下午。
避坑指南:目标板的IP地址不要和主机冲突。另外,QNX默认开启了SSH服务,你可以用SSH登录上去操作。但要注意,第一次连接时可能会提示密钥不匹配,直接选“yes”就行。

配置IDE连接目标板:

  1. 在Momentics IDE中,点击菜单栏的 Window -> Preferences
  2. 找到 QNX -> QNX Target Navigator
  3. 点击 Add,输入目标板的IP地址和端口(默认是8000)
  4. 点击 Test Connection,如果显示“Connected”,恭喜你,搞定了。
我的经验:如果连接失败,先别急着怀疑配置。试试在主机上 telnet 192.168.1.100 8000,看端口通不通。不通的话,八成是目标板上的qconn服务没启动。在目标板上执行 qconn 启动它。

2.4 验证环境:跑一个Hello World

环境搭好了,总得验证一下。我们来写个最简单的程序。

在IDE中创建项目:

  1. 点击 File -> New -> QNX C Project
  2. 输入项目名,比如 hello_qnx
  3. 选择 QNX 7.0 作为工具链
  4. 点击 Finish

编写代码:

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

int main(int argc, char *argv[]) {
    printf("Hello from QNX!\n");
    printf("This is my first QNX program.\n");
    return EXIT_SUCCESS;
}

编译并运行:

  1. 点击工具栏上的锤子图标(Build)
  2. 如果编译成功,会在 Build 窗口看到 Build Finished
  3. 右键点击项目,选择 Run As -> QNX C/C++ Application
  4. 选择你的目标板,点击 OK

如果一切顺利,你会在控制台看到输出:

Hello from QNX!
This is my first QNX program.

常见问题:

  • 编译报错“找不到头文件”:检查SDK路径是否正确,重新source环境变量
  • 运行时报“无法连接目标”:检查网络连接,确认qconn服务在运行
  • 程序跑起来没输出:可能是标准输出被重定向了,试试用 fprintf(stderr, ...)

好了,到这里你的开发环境就搭建完成了。说实话,这个过程确实有点繁琐,但一旦配好,后面就顺畅多了。下一章我们开始真正进入QNX编程的世界,聊聊进程和线程管理——这可是QNX的看家本领。