一、背景

  主要想在imx6dl的开发板上运行python的第三方表格操作库。最好是python3的。。默认自带了python2.7的,有点老。重新构建buildroot好像有点麻烦。

二、平台环境

  • 主机:vurtual box +  ubuntu18.04 x64
  • 目标板:imx6dl (cortexA9 ,arnv7)
  • python版本:3.9.5
  • 工具链:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux(默认添加到环境变量里)。

三、安装过程

 1,下载源码包。

  https://www.python.org/downloads/source/ ,搜索3.9.5版本。下载tar.xz包。

arm上移植python arm运行python_交叉编译

 

 

  拷贝到安装包到ubuntu虚拟机里。,命令如下:

tar -xf Python-3.9.5.tar

 2,编译PC-host版本

  交叉编译前,需要先host主机安装上当前的版本,也就是用本机python配合编译。命令如下

 

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

 

需要注意:不能放默认路径。否则distclean时会被清理掉。

--------------------------------------------------如果在编译过程中报错或者在编译安装时报错,请参考附录。

  把当前的刚刚生成的执行文件和库信息添加到环境变量里,也可以只配置临时环境变量。

  

export PATH=/home/xxx/local_python3_install/bin:$PATH
export LD_LIBRARY_PATH=/home/xxx/local_python3_install/lib:$LD_LIBRARY_PATH

  3,配置交叉编译信息

  这里用的是arm-linux-gnueabihf交叉编译工具链,生成32位的arm平台。直接添加到环境变量里最好。

  配置交叉编译命令:

cd Python-3.9.5/
./configure --host=arm-linux-gnueabihf --build=armv7 \
--prefix=$PWD/arm_install \
--enable-ipv6 \
--enable-shared \
ac_cv_file__dev_ptmx="yes" \
ac_cv_file__dev_ptc="yes"

  –host是交叉编译工具链,–build表示编译出来的程序运行的处理器,–prefix表示安装目录。等会在arm_install目录里找关键文件。

  4,编译安装

  进入python-3.9.5目录里,运行以下命令

make -j4
make install

  有错误信息的话参考附录里解决方案。  

  5,移植到开发板 

把arm_install 目录下的bin/* 拷贝到开发板的 /usr/bin目录下。
把arm_install 目录下的lib/* 拷贝到开发板的 /usr/lib目录下。

方法有很多,如果用ssh登录可以用mobaxterm工具传数据,也可以用SD卡。也可以用scp命令拷贝,也可以用nfs,ftp等。

 

  6,编译其他模块。

  请根据其他相应模块先独自交叉编译,编译出对应的lib、include目录后,在configure配置命令中加入对应的目录,如下以下指令中的LDFLAGS、CPPFLAGS参数

  以这里以zlib库为例,我先单独编译了.

./configure --host=arm-linux-gnueabihf --build=armv7 --prefix=$PWD/_install \
--enable-ipv6 --enable-shared \
ac_cv_file__dev_ptmx="yes" ac_cv_file__dev_ptc="yes"\
 LDFLAGS="-L/home/gec/work_ellip/hw_pc/zlib-1.2.13/arm-build/lib" \
CPPFLAGS="-I/home/gec/work_ellip/hw_pc/zlib-1.2.13/arm-build/include"

编译安装完成后,拷贝到开发板之后。

 在开发板中执行:

$ python3.9
import zlib

  没有报错即可。

附录

错误处理

1,配置,交叉编译阶段出错时,

  • 排查交叉编译器环境变量是否正常,在终端输入arm- 按tab是否能补齐,如果不能补齐,检查下环境变量,执行source ~/.bashrc 然后重启下终端。
  • 排查交叉编译器名称和输入的是否一致。
  • 当前python环境是否正常。
  • 查看报错信息具体内容。

2, 编译安装(make install)阶段出错:

  把以前的python3卸载干净,从第2步开始执行,注意不要把python2也卸载掉。否则ubuntu会崩溃。