2、QNX开发环境搭建:QNX Momentics IDE安装、QNX SDK配置、目标机与宿主机连接、SSH与网络配置
说实话,很多新手学QNX,第一步就卡在环境搭建上。我见过太多人把IDE装好了,结果连不上目标机,折腾一整天。其实没那么复杂,今天我就把整套流程拆开揉碎了讲给你听。
2.1 QNX Momentics IDE安装
QNX Momentics IDE,说白了就是基于Eclipse的一套定制化开发环境。QNX官方把它打包成了一个独立的安装包,省去了你自己配Eclipse插件的麻烦。
安装步骤:
- 获取安装包:从QNX官网或你的License服务器上下载对应版本的安装包。我记得QNX 6.6.0和7.0的安装包大小差不少,7.0的包更大,因为集成了更多工具链。
- 运行安装程序:在Linux宿主机上,直接给安装脚本加执行权限然后运行就行。
chmod +x qnxmomentics-700-linux64.run
./qnxmomentics-700-linux64.run
嗯,这里要注意,安装路径里不要有中文或空格。我有个同事曾经把路径写成了“Program Files (x86)”,结果编译时各种路径解析错误,折腾了半天才发现是空格惹的祸。
- 选择组件:安装过程中会让你选组件。我个人习惯把“Host Development”和“Target Support”都勾上。如果你硬盘空间够,建议全选,省得后面缺东西再补装。
- 配置工作空间:启动IDE时会让你选Workspace路径。我建议单独建一个目录,比如
~/qnx_workspace,别跟其他项目混在一起。
2.2 QNX SDK配置
SDK配置是很多人容易忽略的一步。你想想看,IDE装好了,但编译器找不到头文件、链接器找不到库文件,那还玩什么?
环境变量设置:
安装完SDK后,第一件事就是设置环境变量。我一般把它写到~/.bashrc里,这样每次开终端自动生效。
export QNX_HOST=/opt/qnx700/host/linux/x86_64
export QNX_TARGET=/opt/qnx700/target/qnx7
export PATH=$QNX_HOST/usr/bin:$PATH
export MAKEFLAGS=-j4
这里解释一下:QNX_HOST指向宿主机工具链,QNX_TARGET指向目标机系统文件。我曾经见过有人把这两个变量搞反了,结果编译出来的程序在目标机上跑不起来,报了一堆“找不到动态库”的错误。
IDE内配置:
打开IDE,进入 Window -> Preferences -> QNX -> QNX System Information。在这里添加你的SDK路径。IDE会自动扫描并识别出可用的工具链和系统镜像。
重点:如果你同时安装了多个版本的QNX SDK(比如6.6.0和7.0),一定要在IDE里指定当前项目用哪个版本。我习惯在项目属性里单独设置,而不是改全局配置,这样不同项目可以灵活切换。
2.3 目标机与宿主机连接
环境搭好了,接下来就是让宿主机和目标机能“说上话”。QNX支持多种连接方式:串口、USB、以太网。我个人最推荐以太网,速度快、稳定、调试方便。
硬件连接:
用一根网线把宿主机和目标机直连,或者通过交换机连接。如果你用的是开发板(比如TI的AM335x或NXP的i.MX系列),板子上通常有两个网口,一个用于调试,一个用于业务。我建议把调试网口单独用一根网线直连宿主机。
IP地址配置:
目标机启动后,进入QNX系统,用ifconfig命令配置IP地址。
ifconfig en0 192.168.1.100 netmask 255.255.255.0 up
宿主机这边,把网口IP设为同一网段,比如192.168.1.101。然后互相ping一下,确认连通。
ping 192.168.1.100
如果ping不通,别急着怀疑配置。先检查网线是不是好的,灯亮了没。我曾经有一次折腾了半小时,最后发现是网线水晶头松了——这种低级错误,说出来都是泪。
/etc/rc.d/rc.local里,开机自动配置。
2.4 SSH与网络配置
QNX默认不带SSH服务,需要自己装。不过别担心,QNX SDK里已经包含了SSH相关的二进制文件,你只需要把它部署到目标机上就行。
部署SSH服务:
在宿主机上找到SSH相关的文件:
find $QNX_TARGET -name "sshd" -o -name "ssh" -o -name "scp"
把这些文件拷贝到目标机的/usr/sbin和/usr/bin目录下。同时别忘了拷贝配置文件:
scp $QNX_TARGET/etc/ssh/sshd_config root@192.168.1.100:/etc/ssh/
启动SSH服务:
在目标机上执行:
sshd
然后从宿主机尝试连接:
ssh root@192.168.1.100
第一次连接会提示确认主机密钥,输入yes就行。如果一切顺利,你就进入了目标机的QNX系统。
/root/.ssh/authorized_keys文件里。
网络文件系统(NFS)配置:
如果你像我一样,经常需要把编译好的程序传到目标机上调试,那NFS绝对是神器。配置方法如下:
在宿主机上安装并启动NFS服务:
sudo apt install nfs-kernel-server
sudo mkdir -p /export/qnx_target
sudo mount --bind $QNX_TARGET /export/qnx_target
echo "/export/qnx_target *(rw,no_root_squash,async)" | sudo tee -a /etc/exports
sudo exportfs -a
sudo systemctl restart nfs-server
在目标机上挂载:
mount -t nfs -o tcp,nolock 192.168.1.101:/export/qnx_target /mnt
这样,你在宿主机上编译好的程序,目标机直接就能在/mnt下看到,省去了每次scp的麻烦。
避坑指南:我曾经在NFS配置上栽过跟头。目标机挂载NFS时,如果报RPC: Timed out错误,多半是防火墙没关。在宿主机上执行sudo ufw disable,或者开放NFS相关端口(111、2049等)就能解决。
好了,到这里你的QNX开发环境就基本搭建完成了。IDE装好了,SDK配好了,目标机也能连上了。下一章我们聊聊怎么创建第一个QNX项目,到时候你就知道今天这些配置有多重要了。