您现在的位置是:主页 > news > 河南有名的做网站公司/willfast优化工具下载
河南有名的做网站公司/willfast优化工具下载
admin2025/6/29 17:32:53【news】
简介河南有名的做网站公司,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,这个库是用于网络开发的,也可以不用。
如果有写的不对的地方,希望能留言指正,谢谢阅读。