记录移植Python3到arm开发板linux系统中

这篇具有很好参考价值的文章主要介绍了记录移植Python3到arm开发板linux系统中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求场景

开发板情况

arm板是公司采购的工控机。主要用来 使用python3解析excel表格处理数据。
配置如下:

配置 版本
cpu imx6dl(armv7架构)
操作系统 linux3.10
python版本 2.7

项目情况

项目中最好使用python3 。可行的有以下几种方式:

方式 优缺点 可行度
重做文件系统 订制程度比较高,后期增加减少模块简单,但是前期需要厂家提供的资料较多。 由于厂家只给了固件,暂不可行
交叉编译python3拷贝到开发板中 只需要知道交叉编译器版本就可以移植,但是很多模块需要自己编译并解决依赖 项目中需要的额外模块不多,可行度较高

这里使用交叉编译python3之后再拷贝到开发板中的方式

移植前准备

PC虚拟机系统
ubuntu1804 x64
python3源码:https://www.python.org/downloads/source/
zlib源码:http://www.zlib.net/
python3 扩展模块 : https://pypi.org
	setuptools源码:
	jdcal源码:
	et_xmlfile源码:

移植具体步骤

主要分为以下几个步骤:
1,编译安装python3的host版本(PC)。
2,配置交叉编译器环境变量
3,交叉编译zlib
4,交叉编译python3的target版本
5,把bin和lib都拷贝到arm板子上
6,安装python扩展模块

1,编译安装python3的host版本

1) 查看当前ubuntu中是否有python3,打开终端执行以下命令。

python --version

如果有python3,可以直接到https://www.python.org/downloads/source/下载对应版本的源码。然后跳过当前步骤。
2)下载python3.9.5源码,拷贝到虚拟机里。打开终端执行如下命令:

tar -xf  Python-3.9.5.tar
cd Python-3.9.5/
./configure --prefix=$PWD/../_install_host --enable-shared
make -j4
make install
make distclean

以上命令把python3.9.5安装到本机中,另起一个终端,输入python --version 或者python3 --version 查看版本是否是当前安装的。如果不对可以手动指定环境变量。

export PATH=/home/user/_install_host/bin:$PATH
export LD_LIBRARY_PATH=/home/user/_install_host/lib:$LD_LIBRARY_PATH

2,配置交叉编译器环境变量

这里使用的是gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux,解压后添加到.bashrc最后

gedit ~/.bashrc

#末尾加入两行
export PATH=$PATH::/home/usr_/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/usr_/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/lib

#保存退出后执行
source ~/.bashrc
#执行
arm-linux-gnueabihf-gcc -v

3,交叉编译zlib

下载zlib后,拷贝到虚拟机中,在对应目录打开终端。执行:

tar -xf zlib-1.2.3.tar.xz
cd zlib-1.2.3/
export CC=arm-linux-gnueabihf-gcc #它的configure不支持用CC变量来指定交叉工具链
./configure --prefix=$PWD/arm——build #最后生成的库、头文件和man文件都在当前目录的arm-build目录下
make && make install

4,交叉编译python3的target版本

进入python3源码目录中。确认号交叉编译器正常。

arm-linux-gnueabihf-gcc -v

进入执行配置命令

./configure --host=arm-linux --build=armv7 --prefix=$PWD/arm_build \
--enable-ipv6 --enable-shared \
ac_cv_file__dev_ptmx="yes" ac_cv_file__dev_ptc="yes"\
 LDFLAGS="-L/home/gec/tools/zlib-1.2.13/arm_build/lib" \
CPPFLAGS="-I/home/gec/tools/zlib-1.2.13/arm_build/include" \
--with-ensurepip=yes        --enable-optimizations 

再arm_bulid目录下可以看到编译生成的arm版本的程序
5,把bin和lib都拷贝到arm板子上

scp -r arm_build/bin/* root@192.168.0.106:/usr/bin
scp -r arm_build/lib/* root@192.168.0.106:/usr/lib

进入到arm板卡中。直接执行python3 --version。

python3 --version
#如果没有执行权限就执行:
chmod +x /usr/bin/* -R
chmod +x /usr/lib/* -R
# 测试zlib模块是否正常
root@imx6qsabresd:/usr/sbin# python3
Python 3.9.5 (default, Feb 14 2023, 21:00:17)
[GCC 4.9.2 20140904 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import zlib
>>>

都正常之后可以增加一个链接,每次之心python自动默认python3

rm /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python

6,安装python扩展模块

把下载好的几个包拷贝到板卡中。
执行命令时注意打印信息是否有错误
如果有错误,需要先解决错误。

  • 错误情况1:”zlib“module??
    解决方案:确认以上步骤zlib编译和python3编译过程是否正确。然后重新编译python3。
  • 错误情况2: ValueError: ZIP does not support timestamps before 1980
    解决方案: 文件拷贝到开发板中后文件修改时间丢失。但是zip模块要求时间再1980年之后。所以修改这些模块文件的时间即可。这里提供一个python文件:
import os
import sys
import time
 
# 修改文件的【修改日期】
def set_file_time(filename, updatetime='now', access_time='now'):
    filename = os.path.abspath(filename)
    if updatetime == 'now':
        new_updatetime = time.time()
    else:
        new_updatetime = time.mktime(time.strptime(updatetime, "%Y-%m-%d %H:%M:%S"))
    if access_time == 'now':
        new_access_time = time.time()
    else:
        new_access_time = time.mktime(time.strptime(access_time, "%Y-%m-%d %H:%M:%S"))
    os.utime(filename, (new_access_time, new_updatetime))
 
# 修改一个文件夹内所有文件的【修改日期】
def set_all(path):
    for i in os.listdir(path):
        file = os.path.realpath(os.path.join(path, i))
        if os.path.isfile(file):
            set_file_time(file)
        elif os.path.isdir(file):
            set_all(file)
 
if __name__ == '__main__':
    path = sys.argv[1]  # 这里更换为你要修改的文件夹
    set_all(path)   # 修改以上文件夹内所有文件的日期

把以上内容拷贝到一个文件里。命名为settime.py。放到和python平级目录下。

python3 settime.py jdcal
python3 settime.py et_xmlfile
python3 settime.py openpyxl

1,安装setuptools

tar -xf setuptools-67.2.0.tar.gz
cd setuptools-67.2.0
python3 setup.py build 
python3 setup.py install

2,安装jdcal

tar -xf jdcal-1.4.1.tar.gz
cd jdcal-1.4.1
python3 setup.py build 
python3 setup.py install

3,安装et_xmlfile

tar -xf et_xmlfile-1.1.0.tar.gz
cd et_xmlfile-1.1.0
python3 setup.py build 
python3 setup.py install

4,安装openpyxl

tar -xf openpyxl-3.1.2.tar.gz
cd openpyxl-3.1.2
python3 setup.py build 
python3 setup.py install

正常完成安装后执行,

root@imx6qsabresd:~/python-tools# python3
Python 3.9.5 (default, Feb 14 2023, 21:00:17)
[GCC 4.9.2 20140904 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import openpyxl
>>>

没有报错说明安装成功。

小结

1,移植过程中每一步要根据自己本机的情况,和开发板的情况修改对应目录和文件。
2,编译和安装过程中的报错和打印信息尽量多观察。对于解决问题帮助很大。

参考链接

  • 链接1 https://blog.csdn.net/yyw794/article/details/78059102

  • 链接2 https://blog.csdn.net/qq_33753562/article/details/120972805

  • 链接3 https://blog.csdn.net/u012230668/article/details/89206857

  • 链接4 https://blog.csdn.net/jzzy_hony/article/details/79745136

  • 链接5 https://www.cnblogs.com/Se7eN-HOU/p/16736164.html文章来源地址https://www.toymoban.com/news/detail-766578.html

到了这里,关于记录移植Python3到arm开发板linux系统中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ARM-Linux】项目,语音刷抖音项目

    可以百度了解以下器材 orangepi-zero2全志开发板 su-03T语音识别模块 USB-TTL模块 一个安卓手机 一根可以传输的数据线 安卓手机开启,开发者模式,并开启USB调试功能。 插入开发板,跳出什么就点允许就行(否则可能没有权限开发板无权访问手机系统) 进入网站:http://www.smart

    2024年02月11日
    浏览(27)
  • ARM-Linux驱动内核(S3C2440)

    Linux启动流程 驱动(程序) : 驱使设备行动的程序 1. 启动bootloader---引导操作系统启动的(裸机)程序,为操作系统启动准备环境,并引导操作系统启动 2. 启动kernel---操作系统核心 (俗称的操作系统) 3. 加载根文件系统---一堆文件的集合(根目录下的文件)   存储分类 RAM(随机存储

    2024年01月23日
    浏览(31)
  • 【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

    就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中 创建一个目录 ,例如/usr/local/arm,然后将下载好的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueab

    2024年02月03日
    浏览(32)
  • arm-linux实现onvif server+WS-UsernameToken令牌验证

    目录 一、环境搭建 1、安装openssl 2、安装bison 3、安装flex 二、gsoap下载 三、编译x86版本gsoap 四、编译arm-linux版本gsoap 1、交叉编译openssl 1.1、下载openssl 1.2、交叉编译 2、交叉编译zlib 2.1、下载zlib 2.2、交叉编译 3、交叉编译gsoap 3.1、编译过程中遇到的问题 五、ONVIF框架生成 5.1、

    2024年04月14日
    浏览(21)
  • Linux(Kali\Ubuntu\CentOS\arm-Linux)安装Powershell

    下载链接:https://github.com/PowerShell/PowerShell/ 下载链接:https://github.com/PowerShell/PowerShell/releases 在 Ubuntu 上安装 PowerShell - PowerShell | Microsoft Docs PowerShell下载/PowerShell: PowerShell for every system! (github.com)

    2024年02月04日
    浏览(41)
  • 嵌入式Linux底层系统开发 +系统移植+内核文件系统(基础)

    搭建交叉编译开发环境 bootloader的选择和移植 kernel的配置、编译、移植和调试 根文件系统的制作 前两个要点通常芯片厂家提供。后边两个要点是公司的工作重点。 学习方法:先整体后局部,层层推进 如何编译—如何添加命令和功能—如何定义自己的开发板。 移植的基本步

    2024年02月03日
    浏览(49)
  • Linux系统安装Python3环境(超详细)_linux 安装python3

    本文基于如下Linux系统版本: 1、默认情况下,Linux会自带安装Python,可以运行python --version命令查看 如图: 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了(Ctrl+D退出python命令窗口)。 2、查看Linux默认安装的Python位置 看到/usr/bin/python和

    2024年01月24日
    浏览(37)
  • 学习记录:Windows系统cuda11.6,安装pytorch1.12.0、python3.9

    1、查看显卡相关信息:nvidia-smi。显卡版本531.18,最大可以安装cuda12.1版本,安装步骤上一篇博客讲解过。 2、查看cuda版本:nvcc -V 3、查看anaconda是否安装:conda -V 4、查询cuda11.6对应的pytorch版本:https://pytorch.org/get-started/previous-versions/ 显示对应的pytorch1.12.0、1.12.1,接着查询适

    2023年04月17日
    浏览(34)
  • LuaJit交叉编译移植到ARM Linux

    Lua与LuaJit的主要区别在于LuaJIT是基于JIT(Just-In-Time)技术开发的,可以实现动态编译和执行代码,从而提高了程序的运行效率。而Lua是基于解释器技术开发的,不能像LuaJIT那样进行代码的即时编译和执行。因此,在运行速度方面,LuaJIT要比Lua快得多。此外,LuaJIT还支持更多的

    2024年02月05日
    浏览(28)
  • linux下将QT移植至arm环境

    讲下整个项目流程,我们的目标是把qt编出来程序放在arm开发板上面跑,首先下载QT源码和tslib源码(QT源码编译和QT程序运行需要tslib库的支持),在虚拟机里使用交叉编译将QT源码编译安装,会生成arm环境的库文件和qmake,然后在虚拟机里安装qt的Linux版本,安装好后配置qt的编

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包