在QNX上编译Micropython的详细步骤

9 篇文章 0 订阅

0. 引言

本文将详细介绍如何在QNX操作系统上编译Micropython。我们将从获取源码开始,一步步指导完成配置和编译过程。本教程基于Micropython 1.20.0版本。

1. 步骤概述

  1. 获取源码
  2. 编译mpy-cross
  3. 修改编译配置文件
  4. 调整代码和Makefile
  5. 配置和编译依赖库libffi
  6. 最终编译Micropython

2 详细步骤

2.1. 获取源码

首先,克隆Micropython的源码,并选择指定的版本。

git clone https://github.com/micropython/micropython
cd micropython
git checkout tags/v1.20.0

2.2. 编译mpy-cross

在开始修改配置文件前,先编译mpy-cross。

make -C mpy-cross

2.3. 修改编译配置文件

接下来,需要修改py/mkenv.mk文件中的交叉编译器设置。

CROSS_COMPILE = ntoaarch64-

注意:这一步必须在编译mpy-cross之后执行。如果需要重新编译mpy-cross,请记得临时注释掉这一行。

2.4. 修改代码

为了适配QNX,需对部分代码进行调整。

ports/unix/mpconfigport.h中,移除以下定义:

#define _DIRENT_HAVE_D_TYPE (1)

ports/unix/modusocket.c中,添加依赖头文件:

#include <sys/time.h>

2.5. 修改Makefile

修改ports/unix/Makefile,调整库链接设置:

# 删除以下行
# LIBPTHREAD = -lpthread
# LIBFFI_LDFLAGS += -ldl

# 添加以下行
LDFLAGS += -lsocket

2.6. 配置和编译libffi

进入libffi目录并配置:

cd lib/libffi
./configure --host=aarch64-unknown-nto-qnx7.1.0

在这里插入图片描述

编译后会生成静态库libffi.a

静态库路径为lib/libffi/aarch64-unknown-nto-qnx7.1.0/.libs/libffi.a

2.7. 调整Makefile和配置文件

ports/unix目录下修改Makefile,指定libffi静态库的位置:

# 注释掉原有逻辑
# 修改为
LIBFFI_STATIC = /path/to/libffi.a

在这里插入图片描述

修改ports/unix/mpconfigport.mk,设置MICROPY_STANDALONE为1:

MICROPY_STANDALONE = 1

在这里插入图片描述

2.8. 修改libffi库

lib/libffi/aarch64-unknown-nto-qnx7.1.0/include/ffitarget.h文件中,添加FFI_VFP

在这里插入图片描述

2.9. 编译Micropython

最后,进入ports/unix目录并进行编译:

cd ports/unix
make submodules
make deplibs
make

生成的Micropython可执行文件位于build-standard/micropython

注意事项

  1. 在第2步之后,需要设置QNX交叉编译环境变量。
  2. libffi库可能需要手动编译。
  3. 确保Makefile中正确链接libffi路径。
  4. 必须修改libffi的ABI检查部分,否则编译会报错。

通过上述步骤,你应该能够成功在QNX系统上编译Micropython。如果有任何问题,请参考相应的编译日志或文档进行排查。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘色的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值