二、python3移植到嵌入式系统并瘦身(交叉编译python3并瘦身)
文章目录
- 前言
- 一、删除不必要的文件
- 二、strip缩小体积
- 三、将.py文件转换为.pyc
- 四、终极瘦身之最小python
- 参考文档
前言
前面已经讲了如何移植python到嵌入式系统中,可参考我的另一篇博客交叉编译python3
一、删除不必要的文件
在终端中进入安装目录(/root/am335x/python/Python-3.7.9/build.am3352)
cd /root/am335x/python/Python-3.7.9/build.am3352
- 删除include和share文件夹
- bin和lib下面仅留下python3.7
- /lib/python3.7下删除所有test和config相关的文件
二、strip缩小体积
将 bin下的python3.7 和lib/python3.7下的所有.so strip,基本可以减小一半的体积
- arm-linux-gnueabihf-strip bin/python3.7
- arm-linux-gnueabihf-strip lib/python3.7/lib-dynload/*.so
- arm-linux-gnueabihf-strip lib*.so
如是其他交叉编译工具,则更换arm-linux-gnueabihf
三、将.py文件转换为.pyc
将.py转换成.pyc文件
其实__pycache__里面放的是.py自动生成的.pyc文件,现在手动转换后,就可以减小一半的空间。
- python3 -m compileall . -b
- 删除__pycatche__和所有.py
经过以上步骤,体积缩小到50M左右勉强可以用啦,本人到此步为止。
四、终极瘦身之最小python
lib下面有好多包,并非都是必须的,例如在没有显示屏的arm中,要tkinter作甚?
lib/python3下面保留lib-dynload(动态库)和os.pyc这两个文件
在arm系统上运行bin/python3.7,提示差什么包就把什么包复制过去
最终lib结构如下:
-rw-r–r-- 1 bert bert 29K Oct 11 02:37 _collections_abc.pyc
-rw-r–r-- 1 bert bert 3.4K Oct 11 02:37 _sitebuiltins.pyc
-rw-r–r-- 1 bert bert 6.3K Oct 11 02:37 abc.pyc
-rw-r–r-- 1 bert bert 34K Oct 11 02:37 codecs.pyc
drwxr-xr-x 3 bert bert 12K Oct 11 04:12 encodings
-rw-r–r-- 1 bert bert 3.7K Oct 11 02:37 genericpath.pyc
-rw-r–r-- 1 bert bert 3.3K Oct 11 02:37 io.pyc
drwxr-xr-x 2 bert bert 4.0K Oct 12 2019 lib-dynload
-rw-r–r-- 1 bert bert 29K Oct 11 02:37 os.pyc
-rw-r–r-- 1 bert bert 11K Oct 11 02:37 posixpath.pyc
-rw-r–r-- 1 bert bert 17K Oct 11 02:37 site.pyc
-rw-r–r-- 1 bert bert 3.8K Oct 11 02:37 stat.pyc
现在只有13M了,完全满足我的要求。
encodings文件夹下面肯定可以继续缩减,不过已经超出我的需求了,到此为止。
参考文档
https://www.cnblogs.com/real-bert/p/11662759.html
https://blog.csdn.net/yyw794/article/details/78059183
二、python3移植到嵌入式系统并瘦身(交叉编译python3并瘦身)相关推荐
- 一种嵌入式系统的内存分配方案
1 嵌入式系统中对内存分配的要求 ①快速性.嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快.因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单.快速的内存分 ...
- 如何学STM32 —— 十年经验教你如何学习嵌入式系统
一.如何学习嵌入式系统- - 嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 1.从硬件上,"嵌入"将基于CPU的处围器件,整合到CPU芯 ...
- 嵌入式系统课程设计题目
简介:一些嵌入式系统课程设计题目,可以当做对你学习ARM的一个检测. 嵌入式系统课程设计-选题要求及课题 1.嵌入式系统课程设计时长两星期,要求学生分组进行课程设计,每组学生人数为2-3人(可在不超过 ...
- IT 认证考试--软考--(中级项目)嵌入式系统设计师2:考试大纲【含免帐号免积分下载链接】
一.考试说明 1.考试要求: (1)掌握科学基础知识: (2)掌握嵌入式系统的硬件.软件知识: (3)掌握嵌入式系统分析的方法: (4)掌握嵌入式系统设计与开发的方法及步骤: (5)掌握嵌入式系统实施 ...
- 基本概念学习(1003)---嵌入式系统
嵌入式系统(Embedded system),是一种"完全嵌入受控器件内部,为特定应用而设计的专用计算机系统",根据英国电气工程师协会( U.K. Institution of E ...
- 教你如何学习嵌入式系统
教你如何学习嵌入式系统 一.如何学习嵌入式系统- - 嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 1.从硬件上 "嵌入"将基于CPU的 ...
- 嵌入式系统的概念,嵌入式系统的组成及特点,嵌入式系统的基本开发流程
1. 嵌入式系统的概念 嵌入式系统( Embedded system) , 是一种 "完全嵌入受控器件内部,为特定应用而设计的专用计算机系统"以应用为中心,以计算机技术为基础, ...
- 嵌入式系统(Embedded System)综述(来自wiki)
嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部.具有专一功能和实时计算性能的计算机系统. 1.嵌入式系统(Embedded System)概述 嵌入式系统实例 研究历史 特 ...
- 如何学习嵌入式系统(硬件篇),含51单片机学习资料
学习嵌入式之前我们需要了解什么是嵌入式. (官方说法)嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用 ...
最新文章
- python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...
- 环形链表找入口,真的太妙了
- 学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销
- 介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto
- python从入门到精通学习笔记_Python从入门到精通之基础概念
- Scala集合的常用方法:sum/max/min/product
- python sum函数numpy_解决Numpy中sum函数求和结果维度的问题
- leetcode357. 计算各个位数不同的数字个数(回溯)
- php函数可变参数列表,PHP函数可变参数列表的具体实现方法介绍
- [转载] 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值
- python接口自动化(四十四)- 公共模块configparser读取ini数据库、邮箱配置文件(单独说明)
- Oracle实现limit
- AliSQL-5.6.32编译安装
- 如何用计算机制作个人简历,制作个人简历的模板(电脑个人简历制作步骤)
- 里去频闪的插件叫什么_冬天去海南,你才会发现什么叫“不枉此生”!
- 刚体运动学公式_理论力学:运动学
- 渭师院的计算机专业学什么课程,【三名+建设工作】渭南初级中学教师郭晓辉走进渭师院给大学生上课...
- 基于WEB 的实时事件通知方案
- 【C操作符】详解操作符
- gitlab-ce 14 初始密码无法登录