zoukankan      html  css  js  c++  java
  • 把 Python 移植到 arm 上

    我的这个需求,其实是将Python,移植到一个安卓手机上,

    这个安卓手机是arm的。

    一直想做一个超低功耗的服务器,用什么来做,其实都很难,

    后来我决定用手机来做,

    用手机来做个服务器,功耗肯定低于那些所谓的啥网X云啥的。

    之后,我用了一段时间,在网上花了45元钱,买了一部红米2A手机,2G+16G,1.5Ghz*4。

    这个配置已经算是很牛逼了。

    然后就有了本文,如何把 python 移植上去,

    很尴尬的时候,python 官网没有提供arm 的安装包,

    网上大多的资料都是自己编译python,然后移植,

    我自然也这么做,

    但是网上太多的教程,均无法完成这个需要,太尴尬,

    经过自己一夜的摸索,终于找到了一套看似可行的方法,

    说是看似可行,是因为 python 主程序编完了,也能在目标机器上运行,

    但是还有一些其他的边角脚本没有打包到手机中,

    不过不要紧,这里先只说明编译的过程。

    准备步骤,首先需要准备如下环境,

    1:一台Windows10系统的电脑,如果有Linux 系统的,也可以,但是不在本文考虑范围内

    2:Windows10的电脑中安装了 wsl ,能启动一个ubuntu 子系统

    3:下载,解压adb,能用就行

      地址:https://developer.android.com/studio/command-line/adb

    4:下载一个指定版本的python 源码,我这里使用的是 Python3.8.2

      地址:https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz

    准备步骤结束,开始工作了

    1:在wsl中先安装对应版本的python,由于是x86环境,所以直接安装x86的python即可。

      如何安装随意。

    2:在wsl中安装gcc for arm。

      命令如下:

        安装 arm gcc
          apt-get install gcc-arm-linux-gnueabihf

        安装 arm g++
          apt-get install g++-arm-linux-gnueabihf

    3:解压python 源码,随便放到什么地方

    4:准备开始编译了,需要先config 一下,

      命令如下:

        ./configure --build=x86_64-pc-linux-gnu --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no

      命令大意:

        build 环境是:x86_64-px-linux-gnu

        目标执行环境是:arm-linux-gnueabihf

        C语言编译器使用:arm-linux-gnueabihf-gcc

        C++编译器:arm-linux-gnueabihf-g++

      正常来说,有如上四个参数就可以配置了,但是过程中由于环境不同,可能出现各种不同的报错,

      后面还有两个参数,就是根据目标环境中配置过程出现的错误而添加的,

      有些特殊的环境可能还要添加命令支持 long long 等。

    5:如上命令执行完之后,经过一系列的config,可以正常结束。

      配置结束之后,不要着急make,有个地方需要改一下。

      打开makefile 文件,找到如下类似的位置,增加参数

    1 CC=        arm-linux-gnueabihf-gcc -pthread --static
    2 CXX=        arm-linux-gnueabihf-g++ -pthread --static

    对,就是在CC 和 CXX 后面,增加两个参数,

    -pthread 参数是为了让编译结果不依赖pthread so,--static 是为了让编译结果不依赖任何 so

    用途都是为了静态编译,

    如果不这么做,那么会导致模块就算编译出来,到了手机中也无法运行。

    6:如上makefile文件修改完了之后,

      终于可以开始编译了。

      直接make 即可。

    7:等啊,等啊,一直等到最后,可以看到编译是可以成功的。

    8:编译成功之后,当前目录下会出现一个叫做 python.exe 的文件。

      为啥是 exe ,file一下

      arm 版, 32 位程序,

      看一下依赖,

      dumpbin一下

       没有依赖。

      完美

    9:adb push 到手机里面

     

       之后拷贝到指定位置

       chmod

       简单执行一下,看一下版本

       没啥问题,能执行,没有库依赖,剩下的就是脚本包了

    我先去休息下

  • 相关阅读:
    [导入]mootools框架【二】Core篇: 主要方法测试实例
    公司招聘中不能说的秘密 【转载】
    国外10个ASP.Net C#下的开源CMS
    [导入][Flash开发笔记] List控件删除指定label或data的项
    [导入]用C#截取指定长度的中英文混合字符串 改进版
    今天小侄子出生,想了一天的名字
    一个正则表达式的解释
    今日小收获
    昨天的事
    两点东西
  • 原文地址:https://www.cnblogs.com/suanguade/p/15787905.html
Copyright © 2011-2022 走看看