您现在的位置是:主页 > news > 河南有名的做网站公司/willfast优化工具下载

河南有名的做网站公司/willfast优化工具下载

admin2025/6/29 17:32:53news

简介河南有名的做网站公司,willfast优化工具下载,酷站 网站模板,中国招标投标服务平台官网现如今python是一门非常火热的语言了,由于python的底层是C语言写的,所以只要对python源码进行交叉编译,那么python也可以运行在嵌入式linux平台下,这样就python在嵌入式开发领域也可以大放光芒了。 本教程使用的Python版本是3.6.…

河南有名的做网站公司,willfast优化工具下载,酷站 网站模板,中国招标投标服务平台官网现如今python是一门非常火热的语言了,由于python的底层是C语言写的,所以只要对python源码进行交叉编译,那么python也可以运行在嵌入式linux平台下,这样就python在嵌入式开发领域也可以大放光芒了。 本教程使用的Python版本是3.6.…

现如今python是一门非常火热的语言了,由于python的底层是C语言写的,所以只要对python源码进行交叉编译,那么python也可以运行在嵌入式linux平台下,这样就python在嵌入式开发领域也可以大放光芒了。

本教程使用的Python版本是3.6.8,方法同样也适用于Python3.6的其它版本(如3.6.5等),可以说是屡试不爽。


一 准备

我们是在ubuntu18.04 64位虚拟机下进行交叉编译,这里要注意的是要确保Linux下已经安装了Python3.6,因为交叉编译过程中要用到Python3.6的解释器,所以如果没有要自己安装下,ubuntu18.04自带python3.6,就不用去安装了。

另外去对应网站下载以下4个包,并传到虚拟机中(可以使用winscp传),这些软件版本可以不用完全按照下面这样,只要保证能通过交叉编译就可以了。

  • Python3.6.8.tgz
  • openssl-1.1.1b.tar.gz
  • zlib-1.2.11.tar.gz
  • gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz (去linaro官网下载)

这里要注意下,交叉编译器要和编译嵌入式linux的交叉编译器一致,否则运行时可能会有问题。

传入后解压,如下
在这里插入图片描述

安装交叉编译器

安装交叉编译器可以参照我的另一篇文章《为pcDuino构建启动镜像》,里面有讲如何安装,也就是解压和配置环境变量,很简单。配置好后在终端下输入arm-linux-gnueabihf-gcc -v,会打印交叉编译器的版本信息,
在这里插入图片描述


二 操作

打开终端,输入以下命令对环境变量进行配置,

  • CC=arm-linux-gnueabihf-gcc
  • CXX=arm-linux-gnueabihf-g++
  • LD=arm-linux-gnueabihf-ld
  • AR=arm-linux-gnueabihf-ar
  • STRIP=arm-linux-gnueabihf-strip
  • RANLIB=arm-linux-gnueabihf-ranlib

1. 交叉编译openssl

在配置好的终端下,cd到openssl-1.1.1b的源码目录下,
在这里插入图片描述
然后输入以下命令进行配置,

./config no-asm no-shared --prefix=/home/wh/ePython/openssl-1.1.1b/install

prefix是指定编译好openssl后的lib安装目录。

经过上述命令会生成Makefile,然后打开Makefile,找到CROSS_COMPILE的定义,
在这里插入图片描述
把CROSS_COMPILE的值改为空,
在这里插入图片描述
然后查找‘-m64’这个option并删除掉。

最后输入make & make install进行编译和安装,完毕后在install目录下看到有如下文件,
在这里插入图片描述
注意,不同openssl版本可能遇到的问题不一样,大家具体问题具体对待,都可以解决的。

2. 交叉编译zlib

cd到zlib-1.2.11目录下,
在这里插入图片描述
输入以下命令进行配置

./configure --prefix=/home/wh/ePython/zlib-1.2.11/install

配置完后会生成Makefile,然后输入make & make install来进行编译和安装,最后在install目录下看到有如下文件,
在这里插入图片描述

3. 交叉编译Python3.6.8

cd到Python源码目录下,
在这里插入图片描述
输入以下命令进行配置,

./configure --host=arm-linux-gnueabihf --build=arm --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --prefix=/home/wh/ePython/PythonInstall

配置过程中有这句话,
在这里插入图片描述
这就是为什么前面提到虚拟机里需要预先安装好python3.6。

配置完后,在当前路径下,打开Modules/Setup.dist,

  • 添加交叉编译好的openssl路径。添加前如下,
    在这里插入图片描述
    添加后如下,
    在这里插入图片描述
  • 添加交叉编译好的zlib路径。添加前如下,
    在这里插入图片描述
    添加后如下,
    在这里插入图片描述

然后输入make & make install进行编译安装。

过程中可能会遇到如下问题,
subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
执行命令rm -rf /usr/bin/lsb_release可以解决这个问题,此时需要make clean下,然后再次执行make & make install进行编译安装。

安装好后在/home/wh/ePython/PythonInstall目录下可以看到有如下文件,
在这里插入图片描述


三 移植

把PythonInstall压缩然后传到嵌入式环境中解压,解压后在嵌入式终端下进入PythonInstall/bin目录,然后执行./python3,可以看到起作用了,这样就移植成功了。


四 总结

本教程主要讲述如何交叉编译Python3.6,相信其它版本的Python交叉编译也是类似的,交叉编译过程中使用了openssl,这个库是用于网络开发的,也可以不用。

如果有写的不对的地方,希望能留言指正,谢谢阅读。