前言:
此刻咱们对“arm移植python”可能比较着重,各位老铁们都需要学习一些“arm移植python”的相关资讯。那么小编在网摘上汇集了一些有关“arm移植python””的相关知识,希望小伙伴们能喜欢,你们快快来学习一下吧!最近使用imx6开发板进行开发,用开发板自带的python2.7发现很多库都不能安装,调试很麻烦,干脆直接装一个python3.7。下面的方法应该是通用的,其他硬件应该可以,没有测试,主要就是交叉编译工具的问题。
1. 一键编译python3
在ubantu中建立一个文件夹,然后在文件夹中建立一个make.sh文件,代码如下:
这个脚本最大的问题就是最后一个函数make_target () ,网上的方案主要的分歧点,交叉编译工具gcc和g++路径,
在一个就是解决“LONG BIT”报错用的3行全局变量。这脚本里都写了。
### Copyright By Schips, All Rights Reserved# File Name: make.sh# Created : Tue 24 Dec 2019 04:20:51 PM CST###!/bin/shBASE=`pwd`BUILD_HOST=arm-linux #这个是临时文件夹的名字OUTPUT=${BASE}/install/ #建立install文件夹,最后编译成的python3放到这个文件夹中make_dirs() {cd ${BASE}mkdir compressed install source -psudo ls}tget () { #try wgetfilename=`basename $1`echo "Downloading [${filename}]..."if [ ! -f ${filename} ];thenwget $1fiecho "[OK] Downloaded [${filename}] "}download_package () {cd ${BASE}/compressed#下载包对应的python包。可以换其他的,目前3.7.6已经测试通过。tget }#把压缩包放在了compressed这个文件夹中tar_package () {cd ${BASE}/compressedls * > /tmp/list.txtfor TAR in `cat /tmp/list.txt`dotar -xf $TAR -C ../sourcedonerm -rf /tmp/list.txt}#source是解压缩后的python源码#在ubantu下进行Python3.7.6版本的安装。我手里的ubantu是18.04已经安装Python2.7和Python3.6,不要卸载#如果卸载了,就进不去桌面系统了。make_host () {cd ${BASE}/source/Python*./configuremake && sudo make installsudo rm /usr/bin/pythonsudo ln -s /usr/local/bin/python3 /usr/bin/python}#最关键的步骤,进行嵌入式Python3的编译。#这里注意,黄色的四行。第一行是交叉编译工具地址,剩下3行是路径设置,否则会报LONG_BIT错误make_target () {cd ${BASE}/source/Python*echo `pwd`sudo make cleanmkdir bulid-${BUILD_HOST} -pcd bulid-${BUILD_HOST}mkdir ${BASE}/install/python -p. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabiecho ac_cv_file__dev_ptmx=no > config.siteecho ac_cv_file__dev_ptc=no >> config.siteexport CONFIG_SITE=config.site../configure --host=${BUILD_HOST} \--build=x86_64-linux-gnu \--target=${BUILD_HOST} --disable-ipv6 \--prefix=${BASE}/install/python \--enable-optimizations \ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=yesmake && make install}make_dirsdownload_packagetar_package#make_host #这个是在ubantu系统安装Python3.7.6,如果安装了可以不用执行make_target2. 遇到的问题:
(1)报错,缺少readelf文件,需要找到编译工具中gnu对应的readelf文件。
先利用 find / -name “*readelf”找到文件,然后在这个文件所在的目录里面建立软链接,如下目录中有readelf文件,在此文件夹中建立软链接。
/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-readelf
ln -s arm-poky-linux-gnueabi-readelf arm-linux-readelf
(2)报错,release错误
删除一个文件
sudo rm /usr/bin/lsb_release3. Python3移植到开发板上
在开放板上的路径为/mnt/nfs/下
把install文件下的python文件夹复制到nfs下,就移植成功了。
但是还缺少全局路径。需要在/etc/profile文件中添加如下内容,自启动就加载了全局路径
export PYTHONHOME=/mnt/nfs/pythonexport PATH=$PATH:/mnt/nfs/python/binexport PYTHONPATH=/mnt/nfs/python:/mnt/nfs/python/libexport PYTHONHOME=/mnt/nfs/python
在开发板上执行python3 --version看到版本号就OK了
开发板本身有python命令,是python2.7,没有修改,保留。
4. 移植pip命令
默认移植的python3没有pip命令,需要安装pip命令,如下操作。
(1)安装setuptools
在开发板执行如下命令,在线下载安装包。经测试有问题,不能下载。自己手动下载离线包。
wget --no-check-certificate
离线包方法
在pypi网站中下载setptools的源程序压缩包。
把压缩包放在开发板目录中,可以用ftp或者利用mout挂载的跟ubantu共享的目录中,然后在开放板中执行解压命令,然后安装。
(2)解压及安装
$ tar -zxvf setuptools-60.10.0.tar.gz$ cd setuptools=60.10.0$ python setup.py install(3)下载pip工具包
wget
也是在线方式和离线方式,经证明开发板在线方式有问题,还是离线方式,跟setuptools类似,先在pypi网站下载pip源代码压缩包,进行离线安装。
(4)解压和安装pip工具
tar -zxvf pip-22.0.4.tar.gzcd pip-22.0.4python setup.py install(5)使用pip3命令在线安装库
开发板中pip对应的是python2.7的工具。
pip3对应python3.7.6,但是直接使用pip3安装会报错,提示缺少授权一类的,网上有方案,但是试了一下,都不行,因此直接放弃。
解决方法:使用清华的镜像就可以了,每次都加上镜像,稍微麻烦点。
pip3 install pyserial -i --trusted-host pypi.tuna.tsinghua.edu.cn
效果如下
标签: #arm移植python