当前位置: 首页 > article >正文

Micropython for QNX编译过程

Micropython for QNX编译过程
执行步骤
1.
https://github.com/micropython/micropython
select tag 1.20.0
git clone micropython
2. make -C mpy-cross
3. 修改py/mkenv.mk
CROSS_COMPILE = ntoaarch64-
注意如果这步必须在make -C mpy-cross 之后执行,如果需要重新make -C mpy-cross,记得新注释掉CROSS_COMPILE = ntoaarch64-
4. ports/unix/mpconfigport.h
remove: #define _DIRENT_HAVE_D_TYPE (1)
去除原因是qnx struct dirent does not have dtype
5. ports/unix/modusocket.c
增加依赖头文件#include <sys/time.h>
6. 修改ports/unix/Makefile
remove: LIBPTHREAD = -lpthread
remove: LIBFFI_LDFLAGS += -ldl
add: LDFLAGS += -lsocke
7. cd ports/unix
make submodules
make deplibs
8.进入到lib/libffi中
./configure --host=aarch64-unknown-nto-qnx7.1.0
此时会在lib/libffi/aarch64-unknown-nto-qnx7.1.0/.libs中生成libffi.a静态库。
在这里插入图片描述

9.进入到ports/unix,修改Makefile如下所示,注释掉原有的逻辑,指定静态库的位置,即第8步生成的libffi.a的位置。
在这里插入图片描述

10.将ports/unix/mpconfigport.mk中的配置做如下修改,修改MICROPY_STANDALONE为1。
在这里插入图片描述

11.在lib/libffi/aarch64-unknown-nto-qnx7.1.0/include/ffitarget.h中的ffi_abi中,添加FFI_VFP。
在这里插入图片描述

  1. 进入到ports/unix
    make
    最后生成产物为build-standard/micropython

注意

  1. 在第2步之后,需要用到qnx交叉编译,所以需要source qnx交叉编译的环境变量脚本
  2. libffi库可能需要手动进入到代码目录编译
  3. 需要修改ports/unix/Makefile中有关ffi的链接路径。
  4. libffi的库中的需要修改,需要修改ABI检查部分,若不修改则报错。

http://www.kler.cn/a/155079.html

相关文章:

  • k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
  • 嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机
  • 【AI构思渲染】网络直播——建筑绘图大模型生成渲染图
  • SpringBoot实战(三十一)集成iText5,实现RSA签署PDF
  • Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍
  • C++单例模式与多例模式
  • Linux下配置邮箱客户端MUTT,整合msmtp + procmail + fetchmail
  • idea通过remote远程调试云服务器
  • 2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序
  • 分享一些Git的常用命令
  • 【Python】Gym的使用
  • OpenTelemetry系列 - 第2篇 Java端接入OpenTelemetry
  • ctfhub技能树_web_web前置技能_HTTP
  • Python海绵宝宝
  • 【SpringMVC】Spring Web MVC入门(一)
  • 公平锁和非公平锁以及他们的实现原理是什么
  • react-route-dom 实现简单的嵌套路由
  • linux如何杀死进程_kill
  • 吸积效应:为什么接口会越来越臃肿?我们从一个接口说起
  • vue项目node-sass^4.14.1 python gyp 报错解决办法
  • react-native实践日记--5.ReactNative 项目版本升级,0.61到0.72升级的问题记录(一)
  • SSH:安全的远程登录和数据传输工具
  • Mysql——》int(1)和 int(10)区别
  • python弹球小游戏
  • Claude2 -sdk java (非官方提供)开源计划
  • Python简单模拟蓝牙车钥匙协议