1. QNX开发环境搭建与项目创建

QNX开发环境搭建与项目创建 学习卡片

任务目标

在虚拟机中完成QNX SDP 7.0的安装与配置,建立交叉编译环境,创建Hello World项目并编译生成可执行文件,最终在QNX目标机(或QNX虚拟机)上运行验证。

环境准备

  • 宿主机:Windows 10/11 或 Linux,建议8GB以上内存
  • 虚拟机软件:VMware Workstation 16+ 或 VirtualBox 6.1+
  • QNX SDP 7.0(Software Development Platform),需在Blackberry QNX官网申请评估版
  • QNX目标机镜像:SDP安装包中自带x86_64目标镜像,可直接在虚拟机中启动

安装步骤

  1. 在虚拟机中安装Ubuntu 20.04 LTS(64位),分配至少4GB内存、60GB磁盘
  2. 将QNX SDP 7.0的ISO挂载到虚拟机,执行安装脚本:sudo ./qnx-sdp-7.0.iso(实际为解压后运行安装程序)
  3. 安装完成后,默认安装路径为 /opt/qnx/sdp700,设置环境变量:
export QNX_HOST=/opt/qnx/sdp700/host/linux/x86_64
export QNX_TARGET=/opt/qnx/sdp700/target/qnx7
export PATH=$QNX_HOST/usr/bin:$PATH

建议将上述内容追加到 ~/.bashrc 中以便持久生效。

验证工具链

qcc --version
# 预期输出包含 QNX C/C++ Compiler 版本信息

创建Hello World项目

在任意工作目录创建 hello.c:

#include <stdio.h>

int main(void) {
    printf("Hello from QNX!\n");
    return 0;
}

交叉编译

qcc -V gcc_ntox86_64 hello.c -o hello

参数说明:-V gcc_ntox86_64 指定x86_64目标架构的交叉编译器。编译完成后生成 hello 可执行文件,用 file hello 确认架构:

file hello
# 预期输出包含 ELF 64-bit LSB executable, x86-64

在目标机上运行

  1. 从SDP安装目录启动QNX目标虚拟机镜像:/opt/qnx/sdp700/qnx-vm-images/x86_64/qnx700-image-x86_64.vmdk,在VMware中新建虚拟机并选择此镜像
  2. 启动目标机后,登录(默认用户名 root,无密码)
  3. 查看目标机IP:ifconfig,假设为 192.168.1.100
  4. 在宿主机(Ubuntu开发机)上通过scp传输文件:
scp hello root@192.168.1.100:/tmp/
  1. 在目标机执行:
/tmp/hello

验证通过条件

  • 编译阶段无错误,生成 hello 文件
  • file hello 显示目标架构为x86-64
  • 在目标机上执行 /tmp/hello 后终端输出 Hello from QNX!

常见问题

  • qcc命令找不到:确认环境变量已正确设置,或重新执行 source ~/.bashrc
  • 编译报错无法找到头文件:确认 QNX_TARGET 路径正确,且 hello.c 中 stdio.h 拼写无误
  • 目标机无法启动:检查VMware虚拟机设置,确保固件类型为UEFI,网络适配器选择桥接模式
  • scp连接失败:确认目标机网络已配置且与宿主机互通,可先 ping 测试

至此,QNX开发环境搭建与Hello World项目创建、编译、部署、运行的完整闭环已打通,后续案例将在此环境基础上进行。