关于python中第三方库交叉编译的问题
本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于第三方库交叉编译的问题,交叉编译指的是在一个平台上生成另一个平台上的可执行代码,下面一起来看一下,希望对大家有帮助。
程序员必备接口测试调试工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
后端、前端、测试,同时在线协作,内容实时同步
【相关推荐:Python3视频教程 】
一、前言:
网上关于python的交叉编译的文章很多,但是关于python第三库的交叉编译的文章就比较少了,而且很多标题是第三方库的交叉编译,但是实际上用到的都是不需要交叉编译就能用的库,可参考性不强,最近关于python及其第三方库的交叉编译也踩了不少坑,记录一下!
二、交叉编译介绍:
1、什么是交叉编译:在一个平台上生成另一个平台上的可执行代码。
2、为什么要交叉编译:在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间比较小,而CPU运算能力弱。这种情况下,在ARM平台上进行本机编译就不太可能了,为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。
三、python及其第三方库的交叉编译背景
1、交叉编译链:rv1126-arm-buildroot-linux-gnueabihf-toolchain.tar.bz2
2、目标板子(target主机):armv7l
3、执行交叉编辑的主机(build主机):ubuntu18-x86_64
4、python版本:3.5.2
5、numpy==1.18.5
四、交叉编译的准备工作
build主机是我新安装的一个ubuntu18的新虚拟机,所以连gcc 都没有的
1、安装gcc:sudo apt-get install gcc-8 -y
2、将gcc-8指定成默认的gcc: sudo ln -s /usr/bin/gcc-8 /usr/bin/gcc
3、安装cmake: sudo apt-get install make cmake -y
4、安装libffi-dev 交叉编译 python 需要的依赖:sudo apt-get install libffi-dev
5、安装zip 解压压缩包使用:sudo apt-get install zip -y
五、交叉编译python及其第三方的思路
1、在build主机上交叉编译zlib库,这个是python源码安装必须的依赖库
2、在build主机上交叉编译openssl库,这个虽然不是源码安装必须的依赖库,但是大部分其他库都有可能使用到这个库
3、在build主机上安装build主机上的python版本,我们成为python-build
4、在build主机上交叉编译target主机上的python版本,我们称之为python-target
5、在build主机上通过crossenv搭建target-python的运行虚拟环境
6、在crossenv虚拟环境中通过pip打包交叉编译第三方库为.whl形式的
六、准备交叉编译工具
1、解压交叉编译链:说明不同的平台的使用的交叉编译链不同,但是思路和步骤是一样的。
3、安装cmake: sudo apt-get install make cmake -y
4、安装libffi-dev 交叉编译 python 需要的依赖:sudo apt-get install libffi-dev
5、安装zip 解压压缩包使用:sudo apt-get install zip -y
五、交叉编译python及其第三方的思路
1、在build主机上交叉编译zlib库,这个是python源码安装必须的依赖库
2、在build主机上交叉编译openssl库,这个虽然不是源码安装必须的依赖库,但是大部分其他库都有可能使用到这个库
3、在build主机上安装build主机上的python版本,我们成为python-build
4、在build主机上交叉编译target主机上的python版本,我们称之为python-target
5、在build主机上通过crossenv搭建target-python的运行虚拟环境
6、在crossenv虚拟环境中通过pip打包交叉编译第三方库为.whl形式的
六、准备交叉编译工具
1、解压交叉编译链:说明不同的平台的使用的交叉编译链不同,但是思路和步骤是一样的。
tar jxvf rv1126-arm-buildroot-linux-gnueabihf-toolchain.tar.bz2
登录后复制