zoukankan      html  css  js  c++  java
  • 嵌入式平台移植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

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

    博客园:http://www.cnblogs.com/linux-farmer/
  • 相关阅读:
    open_basedir restriction in effect的错误及其解决办法
    SNMP-网络管理协议
    安装cacti监控系统
    并发时-修改Linux系统下的最大文件描述符限制
    js new date()说明
    阿里云ECS环境部署 centos 6.5
    sysbench
    http_load
    LeetCode: Spiral Matrix
    LeetCode:Length of Last Word
  • 原文地址:https://www.cnblogs.com/linux-farmer/p/14958862.html
Copyright © 2011-2022 走看看