看了很多资料介绍如何将python移植到嵌入式设备当中,但总感觉杂乱五章,还移植不成功,但是经过我的多方摸索,成功的探索出了一条阳光大道,供各位网友借鉴参考。
我采用的方法可以成功移植python2.7以后的所有版本。
第一步:从官网下载源码.并把解压放在/opt
第二步:在 /Python-3.4.5目录下新建一键移植脚本,并执行 内容如下:(执行完会报错某某模块内没安装,这个不耽误,可以直接忽视)
代码语言:javascript复制#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目录,内容如下:
第四步:把arm_python文件夹复制到ARM开发板,编辑/etc/profile
在export PATH这一行后面添加:
:/arm_python/bin
在export LD_LIBRARY_PATH 添加
:/arm_python/lib
然后执行 source /etc/profile
这个时候就成功移植了
第五步:添加第三方模块
把你想要添加源码的第三方源码下载到虚拟机中,本文以mqtt为例,cd 到 源码目录
如果想要安装在虚拟机上只需要执行 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交叉编译&u=http://blog.csdn.net/dxm2025/article/details/41090469 ———————————————————————————————————————————— 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=”-LPWD/../sqlite3/lib” CPPFLAGS=”-IPWD/../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.cn/183515.html原文链接:https://javaforall.cn