cross compile Python3.8.6

本文介绍在ARM平台进行Python交叉编译与裁剪的过程。先给出平台相关信息,下载Python源码,编译x86版本并安装到本地。交叉编译时遇到_ctypes模块编译失败问题并解决,安装时也有状况。编译文件较大,通过裁剪binary文件、so文件及移除不需要的库,最终将文件从162M减至81M,最后在ARM开发板测试成功。
Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

平台相关信息:

toolchain: /opt/ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-gcc

Python version :  Python-3.8.6

build platform : ubuntu18.04 

 

下载 python 源码

wget  https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz

tar  xvf Python-3.8.6.tar.xz 

cd Python-3.8.6

如果你的PC 中的python 版本不是 python3.8.6 ,需要先编译 x86 版本的python 

mkdir build.pc; cd build.pc; ../configure --enable-optimizations; make

将编译的PC版本安装的本地PC,为了不影响PC上原来python的使用,此处直接使用软链接的形式完成安装,

ln  -sf  $(PWD)/python3.8 /usr/bin/python

交叉编译

mkdir build.arm
../configure \
--prefix=$PWD/_install \
--host=arm-linux-gnueabihf \
--build=arm \
--target=arm-linux-gnueabihf \
--enable-shared \
--enable-ipv6 \
ac_cv_file__dev_ptmx=0 \
ac_cv_file__dev_ptc=0 \
--enable-optimizations

make -j

编译后会有报错:

Failed to build these modules:
_ctypes

出现这个问题 ,可能有两个原因,一个是 工具链里没有安装 libffi , 另一个是 python3.8.6 对 交叉编译这块兼容性不太好,直接查阅 configure 文件,修改如下

 

make -j
make install

make 成功!

但是安装的时候出现

看了下Makefile ,下面的都可以执行成功,就可以了

make bininstall
make libinstall
make inclinstall

看了下编译出来的文件 有162M ,在嵌入式设备上运行还是挺大的 

裁剪一下 binary 文件

arm-linux-gnueabihf-strip lib/libpython3.*

差不多少了10M 左右 

找到其余的 so 文件,继续裁剪

如果想继续裁剪,那就需要移除 不需要的库了  比如 test 占了 64M ,如果用不到,就可以删除了

最终裁剪之后是81M

完工! 

 

---------------

测试与安装

# tar zcf python3.8.6.tar.gz *
# ls
bin  include  lib  python3.8.6.tar.gz  share

# scp python3.8.6.tar.gz root@192.168.172.173:/home/root


到 ARM 开发版上,测试成功

root@adam3600:~# tar xvf python3.8.6.tar.gz -C /usr



root@adam3600:~# python3
Python 3.8.6 (default, Jan 13 2021, 14:09:59)
[GCC 6.2.1 20161016] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>>

 

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值