嵌入式平台移植Python

心血来潮,考虑移植Python到现有的arm-linux平台,网上看了看,做的还很多

参考了不少,折腾了两天,现将过程整理一下,备查:

交叉工具链: arm-none-linux-gnueabi-
版本: 3.9.6
编译输出目录: arm_build

0. 官网下载:Python-3.9.6.tgz
1. 解压:tar zxvf Python-3.9.6.tgz
2. 编译本机版本的python工具(PCbuild)
  如果当前电脑安装了不同版本的python, 好像应该删除(否则冲突)
  编译这个工具主要是为了解释setup.py文件
  2.1 ./configure 生成基于PC的Makefile文件

    ./configure

  2.2 Make

    make python Parser/pgen

  修改文件名:

    mv python hostpython
    mv Parser/pgen Parser/hostpgen

  2.3 distclean:

    make distclean

3. 编译arm-target

  3.1 creat Makefile for target

    ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/arm_build --build=arm --disable-ipv6 ac_cv_have_long_long_format=yes ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=yes
    ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/arm_build --build=arm --disable-ipv6 ac_cv_have_long_long_format=no ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no

  3.2 make(确认ssl)

    make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes
    make install HOSTPYTHON=./hostpython BLDSHARED="arm-none-linux-gnueabi-gcc-shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=$PWD/arm_build

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

  4.1. 将 arm_build/bin 中的所有内容拷贝到目标板的/usr/bin。
  4.2. 将 arm_build/lib 中的所有内容拷贝到目标板/lib中
  4.3. 将 arm_build/include 中的所有内容拷贝到目标板/include中。因为其中的某些头文件是Python环境所需要的,比如Python解释器启动依赖于pyconfig.h,import time模块时依赖timefuncs.h。

5. 运行错误:
  python3: error while loading shared libraries: libutil.so.1: cannot open ...
  原因是我的内核版本过低, 拷贝一个新的库进来就好了

 

注:上述2/3步骤,可以简化如下:

  ./configure --prefix=$(pwd)/PCbuild
  make -j8
  make install
  make distclean

  基于PC的工具在PCbuild文件夹下,可以使用下面命令创建软链接(若系统存在python3, 删除即可)

    ln -s $(pwd)/PCbuild/bin/python3.9 /usr/bin/python3

  //creat Makefile

  ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/arm_build --build=arm --disable-ipv6 ac_cv_have_long_long_format=yes ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=yes
  make -j8
  make install

 

注:基本方法源于网络,个人测试整理

posted @ 2021-07-01 15:13  linux_farmer  阅读(833)  评论(0编辑  收藏  举报