2、开发环境搭建:QNX Momentics IDE安装、QNX SDK配置、交叉编译工具链、目标机与宿主机连接
好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多初学者卡就卡在这一步——环境没配好,后面全是坑。我当年刚接触QNX时,光IDE和SDK的版本匹配就折腾了两天。嗯,咱们今天争取半小时搞定。
2.1 QNX Momentics IDE 安装
QNX Momentics IDE,说白了就是一套基于Eclipse的集成开发环境。QNX官方把它打包好了,你不需要自己去拼凑插件。
安装步骤:
- 获取安装包:去QNX官网的Software Center下载。注意,你需要一个有效的License。我个人习惯用QNX 6.6或7.0版本,这两个版本比较稳定。
- 运行安装程序:在Windows或Linux宿主机上直接运行。我建议装在纯英文路径下,别带中文或空格,否则后面编译时可能出一些莫名其妙的错误。
- 选择组件:安装时,记得勾选“QNX Momentics IDE”和“QNX SDK for Apps and Media”。如果你做BSP开发,还要勾选“QNX Board Support Package”相关的组件。
- 配置Workspace:启动IDE后,它会让你选一个工作空间。我建议单独建一个目录,比如
C:\qnx_workspace,别跟其他项目混在一起。
注意: 我曾经遇到过IDE启动后卡在“Loading org.eclipse...”界面。后来发现是JDK版本不兼容。QNX Momentics IDE需要JDK 8或11,别用太高版本。
2.2 QNX SDK 配置
SDK配置,其实就是在IDE里告诉它“你的QNX系统装在哪”。这一步很关键,配错了交叉编译链根本找不到头文件。
配置流程:
- 打开IDE,点击菜单栏
Window → Preferences → QNX → QNX SDKs。 - 点击“Add”按钮,选择你安装QNX SDK的根目录。比如
C:\QNX700或/opt/qnx700。 - IDE会自动扫描SDK中的目标架构。你会看到类似
x86_64、aarch64le、armle-v7等选项。根据你的目标板选一个。 - 点击“Apply and Close”。
小技巧: 如果你有多个版本的SDK(比如6.6和7.0),可以都加进来。在创建工程时再选择具体用哪个。我一般会保留两个版本,因为有些老项目必须用6.6编译。
2.3 交叉编译工具链
交叉编译,说白了就是在你的PC上编译出能在ARM或x86目标板上运行的代码。QNX的工具链是 qcc,它封装了底层的GCC。
验证工具链是否可用:
# 打开命令行,进入SDK目录
cd C:\QNX700\host\win64\x86_64\usr\bin
# 查看qcc版本
qcc --version
# 查看支持的架构
qcc -V
你会看到类似这样的输出:
qcc: QNX C/C++ Compiler (GCC) 8.3.0
Supported architectures:
x86_64
aarch64le
armle-v7
我在项目中遇到过一个问题:明明装了SDK,但命令行里找不到 qcc。后来发现是环境变量没配。你需要把 C:\QNX700\host\win64\x86_64\usr\bin 加到系统的 PATH 里。
环境变量配置示例(Windows):
QNX_HOST=C:\QNX700\host\win64\x86_64
QNX_TARGET=C:\QNX700\target\qnx7
PATH=%QNX_HOST%\usr\bin;%PATH%
2.4 目标机与宿主机连接
环境搭好了,怎么把程序跑在目标板上?你需要建立宿主机(你的PC)和目标机(开发板)之间的连接。QNX支持多种方式,我常用的是以太网和串口。
以太网连接(推荐):
- 用网线把开发板和PC连到同一个交换机上,或者直连。
- 给开发板设置一个静态IP,比如
192.168.1.100。你的PC设成192.168.1.101。 - 在开发板上启动
qconn服务。这个服务是QNX的调试代理。 - 在IDE中配置目标机:
Window → Preferences → QNX → Target Navigator,添加一个新目标,填上IP地址和端口(默认8000)。
串口连接(备用):
如果网络不通,串口是最后的救命稻草。用一根USB转串口线连到开发板的调试串口。在IDE中配置串口参数:波特率115200、数据位8、停止位1、无校验。
避坑指南: 我曾经在连接目标机时,IDE一直报“Connection refused”。折腾了半天,发现是开发板上的
qconn 没启动。你可以在开发板上手动执行 qconn & 来启动它。另外,防火墙也可能拦截8000端口,记得放行。
2.5 验证环境是否搭建成功
最后,咱们写一个简单的“Hello World”来验证整个链路是否通畅。
步骤:
- 在IDE中新建一个QNX C Project,选择
QNX Executable,目标架构选x86_64或你的板子对应的架构。 - 在
main.c中写:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Hello from QNX!\n");
return EXIT_SUCCESS;
}
- 点击编译按钮(锤子图标)。如果控制台输出
Build Finished,说明交叉编译工具链没问题。 - 右键工程 →
Run As → QNX Application。IDE会自动把可执行文件传到目标机并运行。如果终端打印出“Hello from QNX!”,恭喜你,环境搭建成功!
个人经验: 第一次跑通时,我盯着那个“Hello from QNX!”看了好久。那种感觉就像你亲手把一块冰冷的开发板“唤醒”了。嗯,后面你会经历更多这样的时刻。
好了,环境搭建就到这里。下一章咱们开始写第一个真正的驱动程序——GPIO控制。到时候你会用到今天配好的所有工具链和连接方式。别偷懒,先把环境跑通再说。