python能开发arm_获得通用技能的方法

python能开发arm_获得通用技能的方法看了很多资料介绍如何将python移植到嵌入式设备当中,但总感觉杂乱五章,还移植不成功,但是经过我的多方摸索,成功的探索出了一条阳光大道,供各位网友借鉴参考。我采用的方法可以成功移植python2.7以后的所有版本。第一步:从官网下载源码.并把解压放在/opt第二步:在/Python-3.4.5目录下新建一键移植脚本,并执行内容如下:(执行完会报错某某模块内没安装,这个不耽误,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

看了很多资料介绍如何将python移植到嵌入式设备当中,但总感觉杂乱五章,还移植不成功,但是经过我的多方摸索,成功的探索出了一条阳光大道,供各位网友借鉴参考。

我采用的方法可以成功移植python2.7以后的所有版本。

第一步:从官网下载源码.并把解压放在/opt

python能开发arm_获得通用技能的方法

第二步:在 /Python-3.4.5目录下新建一键移植脚本,并执行 内容如下:(执行完会报错某某模块内没安装,这个不耽误,可以直接忽视)

#prepare
echo "prepare stage"
arm_install=/opt/arm_python
arm_build=`pwd`/arm_build
mkdir $arm_build
mkdir $arm_install
cd `pwd`
#arm comfigure
echo "arm confiure stage"
cd $arm_build
echo ac_cv_file__dev_ptmx=yes > config.site
echo ac_cv_file__dev_ptc=yes >> config.site
export CONFIG_SITE=config.site
../configure --host=arm-none-linux-gnueabi --build=i686-linux-gnu --target=arm-none-linux-gnueabi --disable-ipv6 --prefix=$arm_install --enable-shared --silent
 
#pc pgen
echo "pc pgen stage"
cd - 
./configure --silent
for args in $@
do
if [ $args = "all" ];then
make --silent && make install --silent
break
fi
done
make Parser/pgen --silent
cd -
cp ../Parser/pgen Parser
#change the pgen time,
# or else the cross compile will replace this pc version pgen. important!!
touch -t 12312359 Parser/pgen
 
#make
echo "make stage"
make python --silent && make -i install
 
#make it smaller
#arm-none-linux-gnueabi-strip -s $arm_install/bin/python3.3
exit 0

第三步:执行完脚本后,会在/opt下生成arm_python目录,内容如下:

python能开发arm_获得通用技能的方法

第四步:把arm_python文件夹复制到ARM开发板,编辑/etc/profile

在export PATH这一行后面添加:

:/arm_python/bin

在export LD_LIBRARY_PATH 添加

:/arm_python/lib

然后执行 source /etc/profile

这个时候就成功移植了

第五步:添加第三方模块

把你想要添加源码的第三方源码下载到虚拟机中,本文以mqtt为例,cd 到 源码目录

python能开发arm_获得通用技能的方法

如果想要安装在虚拟机上只需要执行 python3 setup.py install 

默认安装的目录是 /usr/local/lib

我们改为python3 setup.py install  –prefix=/opt/arm_python

目的是将默认前缀/usr/local 改为/opt/arm_python

在执行这一步的时候可能会报错,报错提示do not support  .pth file之类的

原因是:python在安装模块的时候,会默认安装到搜索路径,因为我们这个路劲是自定义的,所以安装的时候觉得不合法,所以报错

解决方法:在终端执行 export PYTHONPATH=$PATHONPTH:/opt/arm_python/lib/python3.4/site_packages

——————————————————————————————————————

另外一种方案:

 

————————————————————————————————————————————
########################################################################################

http://c.360webcache.com/c?m=e210a10d6f1f7d9c6adbc7a4b43876e4&q=python%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91&u=http%3A%2F%2Fblog.csdn.net%2Fdxm2025%2Farticle%2Fdetails%2F41090469
————————————————————————————————————————————
Python 移植教程

准备文件:

Python-2.7.13.tgz
sqlite-autoconf-3200100.tar.gz
Python-2.7.13-xcompile.patch.tar.gz

————————————————
步骤1、准备环境

tar xvf Python-2.7.13.tgz

tar xvf sqlite-autoconf-3200100.tar.gz

mkdir python2_7_13_for_x86_32

mkdir python2_7_13_for_arm

mkdir INSTALL

mkdir sqlite3

————————————————
步骤2、安装sqlite

cd sqlite-autoconf-3200100

./configure –host=arm-arago-linux-gnueabi \
    –prefix=$PWD/../sqlite3

make
make install

————————————————
步骤3、安装python2_7_13_for_x86_32

cd ../python2_7_13_for_x86_32/

sed -i ‘s/self.extensions.remove(ext)/print(ext.name)/g’ ../Python-2.7.13/setup.py

../Python-2.7.13/configure –prefix=`pwd`

make

make install

————————————————
步骤4、打补丁

cd ..

tar xvf Python-2.7.13-xcompile.patch.tar.gz -C Python-2.7.13

cd Python-2.7.13/

patch -p1 < Python-2.7.13-xcompile.patch

————————————————
步骤5、配置python2_7_13_for_arm

cd ../python2_7_13_for_arm/

../Python-2.7.13/configure –prefix=`pwd` \
    –host=arm-arago-linux-gnueabi \
    –build=i686-linux-gnu \
    –enable-ipv6 \
    –enable-static \
    ac_cv_file__dev_ptmx=”yes” \
    ac_cv_file__dev_ptc=”no” \
    LDFLAGS=”-L$PWD/../sqlite3/lib” \
    CPPFLAGS=”-I$PWD/../sqlite3/include”

————————————————
步骤6、编译python2_7_13_for_arm

make HOSTPYTHON=../python2_7_13_for_x86_64/python \
    HOSTPGEN=../python2_7_13_for_x86_64/Parser/pgen \
    BLDSHARED=”arm-arago-linux-gnueabi-gcc -shared” \
    CROSS_COMPILE=arm-arago-linux-gnueabi- \
    CROSS_COMPILE_TARGET=yes \
    HOSTARCH=arm-arago-linux-gnueabi \
    BUILDARCH=i686-linux-gnu

————————————————
步骤7、安装python2_7_13_for_arm

make install HOSTPYTHON=../python2_7_13_for_x86_64/python \
    BLDSHARED=”arm-arago-linux-gnueabi-gcc -shared” \
    CROSS_COMPILE=arm-arago-linux-gnueabi- \
    CROSS_COMPILE_TARGET=yes \
    prefix=$PWD/../INSTALL

————————————————
步骤8、移植到开发板之后的配置

export PATH=/INSTALL/bin:$PATH

python python2.7-config –prefix /INSTALL
python python2.7-config –includes /INSTALL/include/
python python2.7-config –libs /INSTALL/lib/

————————————————————————————————————————————
########################################################################################
————————————————————————————————————————————

为Python安装easy_install工具

————————————————
步骤1、下载setuptools-0.6c11-py2.7.egg

wget https://pypi.python.org/packages/25/5d/cc55d39ac39383dd6e04ae80501b9af3cc455be64740ad68a4e12ec81b00/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea

————————————————
步骤2、安装easy_install

/bin/sh setuptools-0.6c11-py2.7.egg 

————————————————————————————————————————————
########################################################################################
————————————————————————————————————————————

修改openssl.so库的版本

————————————————
步骤1、下载openssl-OpenSSL_1_0_1b.zip,并解压缩

tar xvf openssl-OpenSSL_1_0_1b.zip

————————————————
步骤2、

mkdir arm_install

CC=arm-arago-linux-gnueabi-gcc

./Configure linux-elf no-asm –prefix=$PWD/arm_install –openssldir=$PWD –cross-compile-prefix=arm-arago-linux-gnueabi- shared

make

make install

tar cvf arm_install.tar arm_install/

mv arm_install.tar /media/BOOT/

————————————————
步骤3、在开发板上进行操作

mv /media/mmcblk1p1/arm_install.tar /

tar xvf arm_install.tar

cp -r /arm_install/lib/* /usr/lib

cp /arm_install/bin/* /usr/bin/

————————————————
步骤4、取消SSL全局验证并验证easy_install

vi /INSTALL/bin/easy_install

增加

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

easy_install web.py
————————————————
步骤5、安装pip工具

easy_install pip

//此时使用pip工具会报SSL 认证错误,需要安装ntp网络对时
————————————————————————————————————————————
########################################################################################
————————————————————————————————————————————
移植ntp网络对时 (335x已有不用移植)

wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p10.tar.gz

tar xvf ntp-4.2.8p10.tar.gz

cd ntp-4.2.8p10/

mkdir arm_install

CC=arm-arago-linux-gnueabi-gcc

./configure –prefix=$PWD/arm_install –host=arm-arago-linux-gnueabi –enable-static –with-yielding-select=yes

make

make install

————————————–

./ntpdate time.buptnet.edu.cn

http://webpy.org/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183515.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全排列 leetcode_leetcode top100

    全排列 leetcode_leetcode top100原题链接给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]题解回溯即可class Solution {public: vector<vector<int> >res; vector<int>t; void dfs(int num,int len,vecto

    2022年8月8日
    4
  • Qt图形视图体系结构示例解析(视图、拖拽、动画)

    本博的示例来自与QTExample:C:\Qt\Qt5.9.3\Examples\Qt-5.9.3\widgets\graphicsview\dragdroprobot将通过分析示例完成主要功能:

    2021年12月29日
    42
  • 如何修改redis的端口号_redis配置文件详解

    如何修改redis的端口号_redis配置文件详解redis修改默认端口的方法是:首先要先下载文件并解压编译及安装,安装好后全局启动并且设置密码,然后再修改端口号,最后指定运行配置即可【推荐课程:redis教程】(1)通过下面的链接进行下载,然后再用以下命令进行,解压,编译,安装下载地址:http://download.redis.io/redis-stable.tar.gztarxzfredis-4.0.9.tar.gzcdredis-4…

    2022年9月18日
    3
  • Excel宏编程,给出2列进行去重合并

    Excel宏编程,给出2列进行去重合并Sub去重合并()arr=Worksheets(“sheet1”).Range(“D1”).Clear’选择D列作为存储列,保存最后去重合并的值arr=Worksheets(“sheet1”).UsedRangeDimARowAsLong’A列的行数DimBRowAsLong’B列的行数ARow=Sheet1.Range(“A”&Rows.Count).End(xlUp).Row’不带空格的行数BRow=Sheet1.Range..

    2022年5月25日
    35
  • 跨链协议ChainBridge简明教程【EVM/Substrate】「建议收藏」

    跨链协议ChainBridge简明教程【EVM/Substrate】「建议收藏」ChainBridge是一个可扩展的跨链通信协议,目前兼容EMV和Substrate链,支持两个不同的EVM区块链、或者一个EVM链与一个Substrate链之间的跨链桥接与通证转移,支持ERC20、ERC721等多种类型的通证的跨链转移,以及普通数据的跨链转移。在这个教程中,我们将介绍ChainBridge的基本构成和安装方法,并利用ChainBridge实现Substrate原生资产和以太坊ERC20/ERC721通证之间的跨链转移。用自己熟悉的语言学习以太坊开发:Java|Php|

    2022年5月6日
    78
  • settimeout时间误差_采集终端和电能表日计时误差

    settimeout时间误差_采集终端和电能表日计时误差setInterval指定的是“开始执行”之间的间隔,并不考虑每次任务执行本身所消耗的时间。因此实际上,两次执行之间的间隔会小于指定的时间。比如,setInterval指定每100ms执行一次,每次执行需要5ms,那么第一次执行结束后95毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要105毫秒,那么它结束后,下一次执行就会立即开始。为了确保两次执行之间有固定的间隔,可以不用setInterval,而是每次执行结束后,使用setTimeout指定下一次执行的具体时间。

    2022年9月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号