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

在OpenHarmony標準系統上使用Python調用C/C++的SO庫(移植Python3.8到OpenHarmony標準系統)

系統 OpenHarmony
本文介紹如何在OpenHarmony標準系統上部署Python3.8編程環境,并且使用Python調用C/C++的SO庫。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

筆者最近將python解釋器Cpython3.8移植到了OpenHarmony標準系統上。并且開源相關編譯產物。

  • 開源倉庫:在OpenHarmony標準系統上部署Python3.8編程環境

本文介紹如何在OpenHarmony標準系統上部署Python3.8編程環境,并且使用Python調用C/C++的SO庫。

目錄

在OpenHarmony標準系統上使用Python調用C/C++的SO庫

  • 在OpenHarmony標準系統上部署Python3.8編程環境
  • 在OpenHarmony arm64位上部署python3.8編程環境
  • 在OpenHarmony標準系統中使用Python的ctypes模塊調用C/C++的SO庫(類似于NAPI)
  • 在OpenHarmony標準系統上使用Python調用C/C++的SO庫

移植思路分享:

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

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。

可執行文件格式:

OpenHarmony系統采用ELF文件格式作為全系統的二進制文件格式。

目前缺失的模塊:

1、在OpenHarmony標準系統上部署Python3.8編程環境

  • 使用環境

(1)在OpenHarmony arm64位上部署python3.8編程環境

  • 相關文件下載地址:python3.8 for arm64 OpenHarmony

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

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

hdc file send cpython-3.8_oh_install.tar /data
hdc shell #進入開發板終端
cd data
tar -xvf cpython-3.8_oh_install.tar

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

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

設置python庫文件所在路徑,包含兩個路徑。

# /data/cpython-3.8_oh_install/lib/python3.8里面有基礎庫的.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

# 設置third_party的so庫的查找位置 
# 因為把third_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

運行python3。

cd cpython-3.8_oh_install
./bin/python3

將開發板連接網絡,安裝pip。

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

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

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

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

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

將64位python3和pip添加到系統環境變量中。

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"

2、在OpenHarmony標準系統中使用Python的ctypes模塊調用C/C++的SO庫(類似于NAPI)

  • 使用環境

下面以一個簡單的例子來實現在OpenHarmony標準系統中用Python的ctypes模塊調用C/C++的SO庫(類似于NAPI),按照以下步驟進行:

1.下載example工程,工程目錄結構為

.
├── CMakeLists.txt
└── example.c

example.c內容如下:

#include <stdio.h>

// 一個簡單的C函數,將兩個整數相加并返回結果
int add(int a, int b) {
    return a + b;
}

CMakeLists.txt:

add_library(example SHARED example.c)

2.使用OpenHarmony NDK編譯example工程,下載 OpenHarmony SDK 到linux環境,解壓好其中linux的native-linux-x64-x.x.x.x-Release.zip包。

3.設置OpenHarmony NDK 64位編譯工具鏈環境變量。

# 設置 ohos 64bit 庫編譯工具鏈環境變量 aarch64-linux-ohos
export OHOS_SDK=/home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux  # 此處是我的ohos_sdk解壓目錄,請替換為你自己的解壓目錄

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"

設置好OpenHarmony NDK編譯環境后,編譯example工程。

cd example
mkdir build 
cd build 
make clean

 # /home/jiajiahao/OpenHarmony/ndk/ohos-sdk/linux是此處是我的ohos_sdk解壓目錄,請替換為你自己的解壓目錄
/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發送到開發板上,使用Python調用so庫。

執行以下代碼:

創建一個名為example.py的Python文件,編寫如下代碼:
import ctypes

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

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

調用so庫,最后得到兩個數字相加的結果。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-09-13 16:10:15

鴻蒙操作系統

2022-09-16 15:01:37

操作系統技術鴻蒙

2022-09-07 15:08:58

操作系統鴻蒙

2022-09-06 15:46:52

speexdsp鴻蒙

2024-07-09 08:15:26

鴻蒙PythonC++

2023-06-27 15:12:46

C++三方庫移植

2022-09-14 15:28:19

操作系統鴻蒙

2022-09-15 15:21:22

操作系統鴻蒙

2022-10-12 15:14:08

開機動畫鴻蒙

2022-04-02 20:45:04

Hi3516開發板操作系統鴻蒙

2022-09-15 14:56:12

GDB調試鴻蒙

2021-09-16 15:04:28

鴻蒙HarmonyOS應用

2023-02-01 16:28:30

Linux內核鴻蒙

2021-11-08 07:19:45

鴻蒙HarmonyOS應用

2022-01-13 10:11:59

鴻蒙HarmonyOS應用

2023-02-01 16:38:53

2022-02-16 16:01:02

Hi3516開發板鴻蒙

2021-07-19 15:34:05

鴻蒙HarmonyOS應用

2021-10-09 10:12:39

鴻蒙HarmonyOS應用

2021-08-06 15:09:22

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合九色综合欧美狠狠 | 久久久精 | 欧美成人手机视频 | 久久久91精品国产一区二区三区 | 91精品国产92 | 国产精品日韩欧美 | 伊人免费在线观看 | 另类亚洲视频 | 五月天综合网 | 欧美日韩大陆 | 国产婷婷精品 | 欧美精品一 | 欧美福利影院 | 欧美一区二区三区在线观看视频 | 成人在线视频免费观看 | 美女福利视频网站 | 中文字幕在线精品 | 超碰精品在线 | 欧美在线观看一区 | 99re6在线视频精品免费 | 丁香婷婷在线视频 | 欧美群妇大交群中文字幕 | 色精品 | www97影院 | 欧美日韩在线一区二区 | 操一草 | 粉嫩国产精品一区二区在线观看 | 中文字幕av在线播放 | 欧美网站一区二区 | 国产精品99久久久久久www | 毛片网站在线观看 | 黄色a三级 | 国产精品96久久久久久 | 日韩综合一区 | 亚洲网在线 | 超碰97在线免费 | 精品日韩| 亚洲免费三级 | 亚洲成人自拍网 | 精品久久久久久久久久久 | 一区二区三区成人 |