成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在OpenHarmony部署Python編程環(huán)境

系統(tǒng) OpenHarmony
本文介紹如何在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)上部署Python3.8編程環(huán)境,并且使用Python調(diào)用C/C++的SO庫。

筆者最近將python解釋器cpython3.8移植到了OpenHarmony標(biāo)準(zhǔn)系統(tǒng)上。并且開源相關(guān)編譯產(chǎn)物。

開源倉庫:https://gitee.com/from-north-to-north/OpenHarmony_Python

本文介紹如何在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)上部署Python3.8編程環(huán)境,并且使用Python調(diào)用C/C++的SO庫。

移植思路分享:

使用 OpenHarmony NDK 在X86的linux主機(jī)上 交叉編譯 出OpenHarmony arm平臺可以運(yùn)行的Cpython解釋器。

OpenHarmony系統(tǒng)采用llvm項(xiàng)目中的libc作為C運(yùn)行時(shí)庫,在系統(tǒng)側(cè)使用libc ++ .so庫來承載,應(yīng)用側(cè)使用libc++_shared.so來承載,兩邊一套代碼,不同的C++命名空間。https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/napi/ohos-abi.md#c-abi

可執(zhí)行文件格式:

  • OpenHarmony系統(tǒng)采用ELF文件格式作為全系統(tǒng)的二進(jìn)制文件格式

目前缺失的模塊:

在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)上部署Python3.8編程環(huán)境

  • 使用環(huán)境
  • OpenHarmony 4.0R。
  • SDK: OpenHarmony SDK 官方發(fā)布渠道 獲取的4.0.10.5。
  • 在OpenHarmony arm64位上部署python3.8編程環(huán)境相關(guān)文件下載地址:https://gitee.com/from-north-to-north/OpenHarmony_Python。

解壓cpython-3.8_oh_install.tar.xz文件為cpython-3.8_oh_install.tar文件。

將解壓好的cpython-3.8_oh_install.tar文件發(fā)送到開發(fā)板data目錄,將cpython-3.8_oh_install.tar解壓。

hdc file send cpython-3.8_oh_install.tar /data
hdc shell #進(jìn)入開發(fā)板終端
cd data
tar -xvf cpython-3.8_oh_install.tar

設(shè)置python命令(cpython編譯出來的可執(zhí)行文件)所在路徑。

export PYTHONHOME=/data/cpython-3.8_oh_instal/bin

設(shè)置python庫文件所在路徑,包含兩個(gè)路徑。

# /data/cpython-3.8_oh_install/lib/python3.8里面有基礎(chǔ)庫的.py文件
# /data/cpython-3.8_oh_install/lib/python3.8/lib-dynload里面有zlib、libffi等三方庫的so 以及 import math需要的math.cpython-38-aarch64-linux-gnu.so等諸如此類的so
export PYTHONPATH=/data/cpython-3.8_oh_install/lib/python3.8:/data/cpython-3.8_oh_install/lib/python3.8/lib-dynload

# 設(shè)置third_party的so庫的查找位置 
# 因?yàn)榘裻hird_party的,例如libffi的庫文件放在/data/cpython-3.8_oh_install/lib/python3.8/lib-dynload
export LD_LIBRARY_PATH=/data/cpython-3.8_oh_install/lib/python3.8/lib-dynload:$LD_LIBRARY_PATH

運(yùn)行python3。

cd cpython-3.8_oh_install
./bin/python3

將開發(fā)板連接網(wǎng)絡(luò),安裝pip。

# 安裝pip
./bin/python3 -m ensurepip --upgrade

# 卸載pip
./bin/python3 -m pip uninstall pip

# pip管理的三方列表
./bin/bin/pip3 list

# 安裝requests庫,使用國內(nèi)清華源
./bin/bin/pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

# 卸載requests庫
./bin/bin/pip3 uninstall request

將64位python3和pip添加到系統(tǒng)環(huán)境變量中。

export PATH=/data/cpython-3.8_oh_install/bin:$PATH
export PATH=/data/cpython-3.8_oh_install/bin/bin:$PATH

#上一步中pip3 and pip3.8被安裝在/data/cpython-3.8_oh_instal
export PATH="/data/cpython-3.8_oh_instal/bin/bin:$PATH"

在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)中使用Python的ctypes模塊調(diào)用C/C++的SO庫(類似于NAPI)

  • 使用環(huán)境
  • OpenHarmony 4.0R。
  • SDK: OpenHarmony SDK 官方發(fā)布渠道 獲取的4.0.10.5。
  • 編譯環(huán)境:ubuntu18.04。

下面以一個(gè)簡單的例子來實(shí)現(xiàn)在OpenHarmony標(biāo)準(zhǔn)系統(tǒng)中用Python的ctypes模塊調(diào)用C/C++的SO庫(類似于NAPI),按照以下步驟進(jìn)行:

下載example工程,工程目錄結(jié)構(gòu)為。

.
├── CMakeLists.txt
└── example.c
  • example.c內(nèi)容如下:
#include <stdio.h>

// 一個(gè)簡單的C函數(shù),將兩個(gè)整數(shù)相加并返回結(jié)果
int add(int a, int b) {
    return a + b;
}
  • CMakeLists.txt:
add_library(example SHARED example.c)

使用OpenHarmony NDK編譯example工程,下載 OpenHarmony SDK 到linux環(huán)境,解壓好其中l(wèi)inux的native-linux-x64-x.x.x.x-Release.zip包。

設(shè)置OpenHarmony NDK 64位編譯工具鏈環(huán)境變量。

# 設(shè)置 ohos 64bit 庫編譯工具鏈環(huán)境變量 aarch64-linux-ohos
export OHOS_SDK=/home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux  # 此處是我的ohos_sdk解壓目錄,請?zhí)鎿Q為你自己的解壓目錄

export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"

設(shè)置好OpenHarmony NDK編譯環(huán)境后,編譯example工程。

cd example
mkdir build 
cd build 
make clean

 # /home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux是此處是我的ohos_sdk解壓目錄,請?zhí)鎿Q為你自己的解壓目錄
/home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux/native/build-tools/cmake/bin/cmake -DCMAKE_TOOLCHAIN_FILE=/home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux/native/build/cmake/ohos.toolchain.cmake  .. -L 

make

將編譯好的libexample.so發(fā)送到開發(fā)板上,使用Python調(diào)用so庫。

執(zhí)行以下代碼:

創(chuàng)建一個(gè)名為example.py的Python文件,編寫如下代碼:
import ctypes

# 加載C共享庫
libexample = ctypes.CDLL('./libexample.so')

# 調(diào)用C函數(shù)
result = libexample.add(2, 3)
print("Result:", result)

調(diào)用so庫,最后得到兩個(gè)數(shù)字相加的結(jié)果。

責(zé)任編輯:姜華 來源: 鴻蒙開發(fā)者社區(qū)
相關(guān)推薦

2024-06-06 08:06:19

鴻蒙大語言模型LLM模型

2010-03-10 16:05:27

2023-12-29 08:45:40

Python3.8鴻蒙解釋器

2013-05-27 14:37:31

Hadoop 2.0.

2023-08-11 14:06:58

鴻蒙Windows

2024-08-08 15:46:34

2010-01-12 15:13:37

Visual C++環(huán)

2021-09-03 06:46:35

CouponsLinux環(huán)境

2023-04-12 15:25:09

Bytrace鴻蒙

2023-06-13 15:00:54

環(huán)境搭建鴻蒙

2021-11-12 08:21:25

SQL ServerLinux數(shù)據(jù)庫

2010-03-12 16:15:06

Python調(diào)試

2023-06-09 08:15:11

服務(wù)器環(huán)境部署Python

2010-05-25 12:41:19

Subversion

2023-05-17 15:07:42

智能開發(fā)鴻蒙

2023-05-09 15:17:42

Hi3861鴻蒙

2021-11-08 07:19:45

鴻蒙HarmonyOS應(yīng)用

2023-05-12 14:52:11

鴻蒙操作系統(tǒng)

2021-06-11 14:16:21

Windows 10WSL OpenHarmon

2022-09-27 12:00:58

HadoopK8S開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲福利免费 | 精品国模一区二区三区欧美 | 亚洲免费观看视频网站 | 欧美一级在线 | 韩国av电影网| 国产98色在线 | 国产人久久人人人人爽 | 久久久精品日本 | 亚洲精品视频在线 | 日韩免费看视频 | 国产免费福利 | 国产精品午夜电影 | 久久婷婷av| 欧美激情在线精品一区二区三区 | 色橹橹欧美在线观看视频高清 | 久久精品一区二区三区四区 | www.日韩av.com | 国产在线一区二区三区 | 先锋资源吧 | 久久黄网 | 亚洲综合无码一区二区 | 久久精品视频网站 | 欧美视频 | 91九色视频| 欧美激情精品久久久久久 | 国产视频三级 | 日韩中文一区二区三区 | 欧美三级成人理伦 | 操人网站 | 国产在线麻豆精品入口 | 日本天天操 | 久久这里只有精品首页 | 精品久久一区二区三区 | 日韩成人免费视频 | 91久久精品一区二区二区 | 免费黄色录像视频 | 丁香五月网久久综合 | 久久丁香 | 精品二区 | 黑人一级黄色大片 | 亚洲精品国产综合区久久久久久久 |