在OpenHarmony标准系统上使用Python调用C/C++的SO库(移植python3.8到OpenHarmony标准系统) 精华
笔者最近将python解释器cpython3.8移植到了OpenHarmony标准系统上。并且开源相关编译产物。
本文介绍如何在OpenHarmony标准系统上部署Python3.8编程环境,并且使用Python调用C/C++的SO库。
目录
在OpenHarmony标准系统上使用Python调用C/C++的SO库
移植思路分享:
1.使用 OpenHarmony NDK
在X86的linux主机上 交叉编译 出OpenHarmony arm平台可以运行的Cpython解释器。
2.OpenHarmony系统采用llvm项目中的libc作为C运行时库,在系统侧使用libc ++ .so库来承载,应用侧使用libc++_shared.so来承载,两边一套代码,不同的C++命名空间。 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/napi/ohos-abi.md#c-abi
3.可执行文件格式:
- OpenHarmony系统采用ELF文件格式作为全系统的二进制文件格式
目前缺失的模块:
1.在OpenHarmony标准系统上部署Python3.8编程环境
- 使用环境
- OpenHarmony 4.0R
- SDK: OpenHarmony SDK 官方发布渠道 获取的4.0.10.5
1.1 在OpenHarmony arm64位上部署python3.8编程环境
- 相关文件下载地址:python3.8 for arm64 OpenHarmony
1.解压cpython-3.8_oh_install.tar.xz
文件为cpython-3.8_oh_install.tar
文件
2.将解压好的cpython-3.8_oh_install.tar
文件发送到开发板data目录,将cpython-3.8_oh_install.tar
解压。
3.设置python命令(cpython编译出来的可执行文件)所在路径
4.设置python库文件所在路径,包含两个路径
5.运行python3
6.将开发板连接网络
,安装pip
7.将64位python3和pip添加到系统环境变量中
2.在OpenHarmony标准系统中使用Python的ctypes模块调用C/C++的SO库(类似于NAPI)
- 使用环境
- OpenHarmony 4.0R
- SDK: OpenHarmony SDK 官方发布渠道 获取的4.0.10.5
- 编译环境:ubuntu18.04
下面以一个简单的例子来实现在OpenHarmony标准系统中用Python的ctypes模块调用C/C++的SO库(类似于NAPI),按照以下步骤进行:
1.下载example工程,工程目录结构为
- example.c内容如下
- CMakeLists.txt
2.使用OpenHarmony NDK编译example工程,下载 OpenHarmony SDK 到linux环境,解压好其中linux的native-linux-x64-x.x.x.x-Release.zip
包
3.设置OpenHarmony NDK 64位编译工具链环境变量
4.设置好OpenHarmony NDK编译环境后,编译example工程
5.将编译好的libexample.so
发送到开发板
上,使用Python调用so库
执行以下代码:
6.调用so库,最后得到两个数字相加的结果。
又一位移植Python大佬!
移植Python可真厉害