交叉编译python第三方库

这里我们以 编译android python程序为例

工具

crossenv

名词

对于交叉编译的各个部分,没有标准的词汇表,不同的资源经常会使用相互矛盾的术语。为了避免混淆,我们只使用 GNU 术语,这是 Python 本身使用的。

host 就是你编译出来的包要运行的平台,比如这里是Android
build 进行编译的平台,就是你自己的的电脑
host-python 在host上运行的python, 这里是android python
build-python 你自己的本机的python
cross-python 使用crossenv 创建的python用于进行第三方库交叉编译的

构建 build-python

构建或获取 host-python

创建cross-python

  • 安装crossenv
 pip install crossenv
  • 创建虚拟环境
    build-python 和 host-python的版本一定要完全相同
python -m crossenv  /path/to/host-python/bin/python3  cross_venv
C:\Users\Administrator>python -m crossenv  D:\Users\Downloads\python\python3.tar\python3\bin\python3  cross_venv
WARNING: CC is a compound command (['aarch64-linux-android28-clang', '-pie', '-fPIE'])
WARNING: This can cause issues for modules that don't expect it.
WARNING: Consider setting CC='aarch64-linux-android28-clang' and CFLAGS='-pie -fPIE'
WARNING: CXX is a compound command (['aarch64-linux-android28-clang++', '-pie', '-fPIE'])
WARNING: This can cause issues for modules that don't expect it.
WARNING: Consider setting CXX='aarch64-linux-android28-clang++' and CXXFLAGS='-pie -fPIE'

根据提示设置好环境变量(在这里将aarch64-linux-android28-clang的所在路径加入 PATH环境变量即可)

交叉编译python第三方库

  • 激活虚拟环境
. ./cross_venv/bin/activate
  • 使用build-pip 安装该库
    这个步骤不是真正的交叉编译,而是为了安装交叉编译所需的python依赖
(cross) build-pip install cffi
  • 使用pip交叉编译安装该库
(cross) pip install bcrypt

最后库会被安装在cross文件夹里的site-packages文件夹中

posted @ 2024-06-17 14:40  乘舟凉  阅读(21)  评论(0编辑  收藏  举报