python交叉编译移植到ARM

系统 2839 0

以下内容没有经过语言的整理,但是是我真实的移植过程,仅供参考

源码下载地址:https://www.python.org/

参考:

https://blog.csdn.net/yyw794/article/details/78059102

https://www.cnblogs.com/pengdonglin137/p/6604471.html

本次移植的是Python-3.6.9  后来我又移植了3.4.6,大部分一直,只有sh有差别。

我的目录是:\nfs_root\app\Python\Python-3.6.9

Python2.7.13的交叉编译,在编译前需要给Python源码打上用于交叉编译的patch,从Python-3.3.1开始,就不需要再打什么patch了,只需要在configure的时候指定--build和--host参数即可。

很重要先编译PC的

因为在交叉编译的时候需要在PC上面运行对应版本的Python程序,所以我们需要先编译和安装PC上面用的Python ,下面是命令:

            
              ./configure

make
sudo make install
            
          

测试下是否可以了

新建一个文件:helloword.py

            
              # 该实例输出 Hello World!
print('Hello World!')
            
          

运行:python3 ./helloword.py

输出

 

 

PC环境搭建完成,下面开始编译arm

这是Python-3.6.4 在3.6.9应该也可以使用

            
              #prepare
echo "prepare stage"
arm_install=`pwd`/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-fsl-linux-gnueabi \
	--build=i686-linux-gnu \
	--target=arm-fsl-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-fsl-linux-gnueabi-strip -s $arm_install/bin/python3.3
exit 0

            
          

 

 

 

这是Python-3.6.9 

            
              #!/bin/bash
#prepare
echo "make clean"
make clean

echo "prepare stage"
arm_install=`pwd`/arm_python
arm_build=`pwd`/arm_build
mkdir $arm_build
mkdir $arm_install
cd `pwd`
#arm comfigure
echo "arm confiure stage"
cd $arm_build

#配置交叉编译:

#CC为指定C交叉编译器,我的是arm-fsl-linux-gnueabi-gcc
#CXX为指定C++交叉编译器,我的是arm-fsl-linux-gnueabi-g++
#AR为ar工具,我的是arm-fsl-linux-gnueabi-ar
#RANLIB为ranlib工具,我的是arm-fsl-linux-gnueabi-ranlib
#Host为目标主机,我这里设置的是arm-fsl-linux-gnueabi
#Build为编译环境主机,我的是i386
#Prefix为安装位置

#配置命令:
../configure \
	CC=arm-fsl-linux-gnueabi-gcc \
	CXX=arm-fsl-linux-gnueabi-g++ \
	AR=arm-fsl-linux-gnueabi-ar \
	RANLIB=arm-fsl-linux-gnueabi-ranlib \
	--host=arm-fsl-linux-gnueabi \
	--build=i386 \
	--disable-ipv6 \
	--prefix=$arm_install \
	ac_cv_file__dev_ptmx=yes \
	ac_cv_file__dev_ptc=yes 
	
echo "make stage"
make HOSTPYTHON=./python \
	HOSTPGEN=./Parser/pgen \
	BLDSHARED="arm-fsl-linux-gnueabi-gcc -shared" \
	CROSS_COMPILE=arm-fsl-linux-gnueabi- \
	CROSS_COMPILE_TARGET=yes \
	HOSTARCH=arm-fsl-linux-gnueabi \
	BUILDARCH=i386
#************************************************
#如果报错了,则需要删除下面的内容,先使用
#find / -name lsb_release
#查找路径是否正确别删错了
#rm -rf /usr/bin/lsb_release
#************************************************
#echo "rm -rf /usr/bin/lsb_release"
#rm -rf /usr/bin/lsb_release
	
echo "make install  stage"
sudo make install HOSTPYTHON=./python \
	BLDSHARED="arm-fsl-linux-gnueabi-gcc -shared" \
	CROSS_COMPILE=arm-fsl-linux-gnueabi- \
	CROSS_COMPILE_TARGET=yes




            
          

用上面我修改的脚本不会报告下图中的错误,遇到的兄弟可以使用后面的语句解决,下面的错误是在make install时候出现的

python交叉编译移植到ARM_第1张图片

 

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

解决方法
find / -name lsb_release
rm -rf /usr/bin/lsb_release

编译完成后会在下图中显示你需要的文件

python交叉编译移植到ARM_第2张图片

其中arm_python是需要跑在硬件上的

在开发板上,运行

vi /etc/profile 

添加环境变量

export PATH=/usr/python/bin:$PATH
export LD_LIBRARY_PATH=/usr/python/lib:$LD_LIBRARY_PATH
 

保存退出。将arm_python下的内容拷贝到开发板上/usr/python下

运行:source /etc/profile  或者重启你的开发板

可以使用

echo $LD_LIBRARY_PATH 验证lib

echo $PATH 验证bin

测试python是否移植成功

任意目录执行python3 ./helloworld.py

看到  Hello World! 说明成功了

 

 

 


 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论