本文作者是北京信息科技大学2019级硕士研究生肖川,日常科研工作中,对操作系统移植过程中遇到的问题进行了总结。

摘要:
在嵌入式系统中通常没有本地编译器,因此嵌入式系统运行需要的软件都是在编译前定制好的。对于不依赖于具体平台的运行语言来说,可以不用考虑平台的差异性,例如python。对于纯python程序可以不用考虑平台的差异,但是如果想要加速编译后程序的运行速度,则需要使用与平台关联性强的语言去编写部分代码来提高整体速度。这种方法通常被应用于python的第三方库的开发。但是在嵌入式平台上安装python的第三方库与PC环境中安装不同,通过常有两种方法,一、第三方库需要与根文件系统一起编译;二在PC环境中交叉编译后再安装到嵌入式系统上。但是第二种方法并不稳定,如果不熟悉系统环境,会出现很多意外的问题,因此通常会选用第一种方法来实现。buildroot是一种嵌入式系统生成框架,该框架集成多种编译工具,可以生成uboot、linux内核、根文件系统,本文用到了buildroot生成根文件系统的功能。
正文:
安装必要脚本
在 buildroot 中已经内置了部分 python 库,但是实际运用时用的到库 buildroot 中可能不存在,因此需要向 buildroot 中添加要安装的库。
使用 scanpypi 可以动态添加 python 库
https://github.com/ishahak/buildroot_scanpypi3
按照文档中的使用说明,python 库会被添加到该文件所在的 package 文件下,但 buildroot 实际使用的位置在 buildroot 根文件下的 package 文件夹下。因此可以将新增的库移动到 buildroot 下的 package 文件夹,也可以不移动。
修改配置文件
python 库下载完成后,使用 make menuconfig 还看不到新安装的库,需要修改 package 的配置文件。
# 位置
/package/Config.in
# 例如添加 websocker
# 在 python 扩展包下添加 websocker 的配置文件
menu "External python modules"
+ source"package/python-websocket-server/Config.in"
保存之后,在 menconfig 中可以找到新增的 python 库,如图1所示。

图1 menconfig展示
本文介绍了在嵌入式系统中如何处理Python第三方库的移植问题,特别是当没有本地编译器时。作者分享了使用buildroot框架生成根文件系统,并通过scanpypi动态添加Python库的方法。文章强调了在嵌入式平台安装Python库与PC环境的不同,推荐了直接在根文件系统编译的方式,并详细阐述了配置过程。
2841

被折叠的 条评论
为什么被折叠?



