移植Python3.6.6到嵌入式Linux平台——HI3531DV100

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

源码下载&解压

  1. wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz

  2. xz -d Python-3.6.6.tar.xz

  3. tar xvf Python-3.6.6.tar

编译HOST解释器

同Python2一样,在交叉编译的时候需要在HOST PC上运行对应版本的Python程序,所以需要先编译HOST PC上面用的Python,下面是命令

  1. cd Python-3.6.6/

  2. ./configure --prefix=$PWD/../_install_host --enable-shared

  3. make -j2

  4. make install

  5. make distclean

注意:–prefix指定的目录不要放在Python-3.6.6目录里,因为执行make distclean会清掉一些文件

把生成的HOST PC端的bin和lib,加到环境变量里面去,后续交叉编译就会自动找到python3了

  1. export PATH=/home/xxx/board_nfs/python/_install_host/bin:$PATH

  2. export LD_LIBRARY_PATH=/home/xxx/board_nfs/python/_install_host/lib:$LD_LIBRARY_PATH

验证HOST PC端的python3可用
在这里插入图片描述

配置交叉编译工具链

  1. ./configure --host=arm-hisiv600-linux --build=armv7 --prefix=$PWD/_install --enable-ipv6 --enable-shared ac_cv_file__dev_ptmx="yes" ac_cv_file__dev_ptc="no" LDFLAGS="-L/home/xxx/board_nfs/python/python_deps/lib" CPPFLAGS="-I/home/xxx/board_nfs/python/python_deps/include"

–host是交叉编译工具链

–build表示编译出来的程序运行的处理器,可在目标板cat /proc/cpuinfo查到
在这里插入图片描述

这里我已经把zlib、sqlite3的lib和include添加上了,编译zlib、sqlite3可查看上一篇博客,所以生成的python3是支持zlib、sqlite3的

编译&安装

  1. make -j2

    这一步提示编译已完成,但同样会发现缺失很多模块,参考前一篇博客,实际需要哪些模块的,可自己交叉编译
    在这里插入图片描述

  2. make install

执行完以上两个命令之后在_install中会产生bin lib include share 4个文件夹

目标板文件拷贝

现将_install整个文件夹,拷贝到ARM目标板的文件系统中,随意位置

我这里是通过nfs挂载到目标板的,因为目标板的Flash容量有限

拷贝zlib、sqlite3库文件到目标板

  1. cp -rfp python_deps/lib/libz.so* Python-3.6.6/_install/lib/

  2. cp -rfp python_deps/lib/libsqlite3.so* Python-3.6.6/_install/lib/

验证目标板Python

  1. export LD_LIBRARY_PATH=/nfsroot/python/Python-3.6.6/_install/lib:$LD_LIBRARY_PATH

  2. cd python/Python-3.6.6/_install/bin/

  3. ./python3

写几行代码,测试一下
在这里插入图片描述

测试结果符合预期!

参考

  1. https://www.cnblogs.com/pengdonglin137/p/6604471.html
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页