# Sipeed V831 toolchain-sunxi-musl 这是由 V831 的 SDK 导出的二进制编译链,用于交叉编译内部的 Python 模块或 C 工程。 ## shell bash usage 在 linux 系统下,解压后在当前目录,执行下述命令加载环境,这会替换当前终端的 python3.8 和 pip3.8 以及 gcc ,最后通过 Python3.8 编译得到 linux_armv7l.whl 的二进制包。 ```shell source v831/envsetup.sh git clone https://github.com/sipeed/python3-maix cd python3-maix python3.8 setup.py build bdist_wheel ls dist ``` 如果缺乏静态库和动态库,缺少依赖造成的 sudo apt-get install build-essential module-assistant gcc-multilib g++-multilib https://blog.csdn.net/zhangHK33/article/details/118785972 ImportError: libxxx: cannot open shared object file: No such file or directory缺乏环境变量,执行以下命令 echo $LD_LIBRARY_PATH export LD_LIBRARY_PATH=”/usr/local/lib64/” 这会得到 `dist/python3_maix-*.*.*-cp38-cp38-linux_armv7l.whl` 将其传入 IP 地址为 192.168.0.156 的硬件里。 ```shell scp dist/python3_maix-0.1.1-cp38-cp38-linux_armv7l.whl root@192.168.0.156:/root/ ``` 切换到 V831 的 shell 终端,安装并运行该模块。 ```shell pip install /root/python3_maix-*.*.*-cp38-cp38-linux_armv7l.whl python -c "import maix" ``` 运行通过,删除编译的内容。 ```shell python3.8 setup.py clean --all ``` > 开发 Python 包时可以使用 python3.8 setup.py build & install 在进行跨平台的编译、安装、测试等操作,再推至下层硬件运行测试代码即可,可以用 tox 自动测试框架。 ## note 该 Python3 环境与 V831 环境的 Python3 一致,通过它 Python 调用 toolchain-sunxi-musl 进行交叉编译得到相应平台的 linux armv7l 平台的 whl 二进制包,但此时你不能将该包安装在本机上,编译通过不代表可以实机运行,请自行配合 ldd 和 nm 查询相关依赖函数链接。 > 注 g++ 可以被 gcc -xc++ -lstdc++ -shared-libgcc 替换。 在 v831/usr 目录下可以自行添加系统必要的 lib ,如 libjpeg 或 libpng 等常见库,如果没有,就会从本机找。 ## link setup.py 的用法可以参考 [2021年,你应该知道的Python打包指南](https:///2020/12-25/python-packaging) ## Hepl 在 v831 目录中的内容来源。 - toolchain-sunxi-musl 对应 sdk/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-arm9-musl 编译链。 - host 是与 V831 的 Python3 编译配置一致的 x86 版本,借助它调用 toolchain-sunxi-musl 可编译直接运行在 V831 armv7l 的 Py 模块,取自 sdk/out/v831-sipeed/staging_dir/target/host。 - usr 为 V831 linux 系统的 usr 目录,可以为 Python3 提供链接(/usr/include)系统环境的(.h)文件或链接(.so)库。 |
|