交叉编译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文件夹中