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。
- 进入到ports/unix
make
最后生成产物为build-standard/micropython
注意
- 在第2步之后,需要用到qnx交叉编译,所以需要source qnx交叉编译的环境变量脚本
- libffi库可能需要手动进入到代码目录编译
- 需要修改ports/unix/Makefile中有关ffi的链接路径。
- libffi的库中的需要修改,需要修改ABI检查部分,若不修改则报错。