第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账号(去官网注册,免费的)
安装步骤:
- 从QNX官网下载Momentics IDE安装包(大约1.2GB)
- 双击运行安装程序,选择安装路径。嗯,这里要注意:路径不要带中文和空格,否则后面编译会报一些莫名其妙的错。
- 选择组件时,我建议全选。虽然占点空间,但省得后面缺东西再补。
- 等待安装完成,大概10-15分钟。
我的小技巧:安装完成后,先别急着打开IDE。去安装目录下找到
qnxconfig.sh 文件,用文本编辑器打开,把 QNX_TARGET 和 QNX_HOST 的环境变量路径确认一下。我曾经遇到过路径指向了旧版本,结果编译时死活找不到头文件。
2.2 QNX SDK的配置
SDK配置是重头戏。很多人装完IDE就以为完事了,结果一编译就报错——说白了就是SDK没配好。
SDK是什么?它包含了编译器、链接器、库文件、头文件等。没有它,你的代码就是一堆文本。
配置步骤:
- 打开QNX Software Center,登录你的账号
- 在“Available Software”里找到你需要的SDK版本。比如QNX 7.0或7.1,看你目标板支持哪个。
- 选择对应的BSP(Board Support Package)。比如你用的是Raspberry Pi 4,就选对应的BSP。
- 点击安装,等待下载完成。
重要:安装完成后,一定要检查环境变量。打开终端,输入:
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的虚拟机镜像。
- 下载QNX Neutrino的ISO镜像或VMware镜像
- 在VMware或VirtualBox中创建新虚拟机,选择QNX作为操作系统类型
- 分配至少1GB内存,2个CPU核心
- 启动虚拟机,你会看到QNX的启动日志
方案二:连接物理目标板(推荐)
我建议有条件的话还是用物理板子。虚拟机和真实硬件还是有差距的,尤其是驱动开发和实时性测试。
连接步骤:
- 用网线把目标板和主机连到同一个路由器或交换机上
- 给目标板设置静态IP。比如:
192.168.1.100 - 在主机上打开终端,测试连通性:
ping 192.168.1.100 - 如果ping不通,检查防火墙和网线。我曾经被一根坏网线坑了整整一下午。
避坑指南:目标板的IP地址不要和主机冲突。另外,QNX默认开启了SSH服务,你可以用SSH登录上去操作。但要注意,第一次连接时可能会提示密钥不匹配,直接选“yes”就行。
配置IDE连接目标板:
- 在Momentics IDE中,点击菜单栏的
Window -> Preferences - 找到
QNX -> QNX Target Navigator - 点击
Add,输入目标板的IP地址和端口(默认是8000) - 点击
Test Connection,如果显示“Connected”,恭喜你,搞定了。
我的经验:如果连接失败,先别急着怀疑配置。试试在主机上
telnet 192.168.1.100 8000,看端口通不通。不通的话,八成是目标板上的qconn服务没启动。在目标板上执行 qconn 启动它。
2.4 验证环境:跑一个Hello World
环境搭好了,总得验证一下。我们来写个最简单的程序。
在IDE中创建项目:
- 点击
File -> New -> QNX C Project - 输入项目名,比如
hello_qnx - 选择
QNX 7.0作为工具链 - 点击
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;
}
编译并运行:
- 点击工具栏上的锤子图标(Build)
- 如果编译成功,会在
Build窗口看到Build Finished - 右键点击项目,选择
Run As -> QNX C/C++ Application - 选择你的目标板,点击
OK
如果一切顺利,你会在控制台看到输出:
Hello from QNX!
This is my first QNX program.
常见问题:
- 编译报错“找不到头文件”:检查SDK路径是否正确,重新source环境变量
- 运行时报“无法连接目标”:检查网络连接,确认qconn服务在运行
- 程序跑起来没输出:可能是标准输出被重定向了,试试用
fprintf(stderr, ...)
好了,到这里你的开发环境就搭建完成了。说实话,这个过程确实有点繁琐,但一旦配好,后面就顺畅多了。下一章我们开始真正进入QNX编程的世界,聊聊进程和线程管理——这可是QNX的看家本领。