Android源码编译时Python版本问题(EOFError: marshal data too short)

在repo init和repo sync时,需要python3.6+,在编译android源码时,又需要Python2.7,所以需要系统中同时存在Python的2+和3+版本。

(1)安装Python2+版本:

在Ubuntu中会自带,不需要再次安装。

(2)安装Python3.6+版本:

下载Python3+源代码:
Python 官方下载地址:https://www.python.org/downloads/
解压源码包:

$ tar -zxvf Python-3.8.5.tgz

安装编译源码的依赖库:

$ sudo apt-get install zlibc zlib1g-dev

编译:

$ cd Python-3.8.5
$ ./configure  --prefix=/usr/local           注:--prefix=/usr/local用于指定安装目录
$ make
$ sudo make install

(3)切换Python2+和Python3+版本:

怎样能快速的切换Python2+和Python3+呢,可以使用如下方式配置:
使用update-alternatives 命令处理 Linux 系统中软件版本的切换,使其多版本共存。
向系统注册python2.7:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

最后这个参数1是优先级,作用是,当你没有通过update-alternatives --config手动选择具体版本时,系统会优先选用优先级高的程序版本。数越大优先级越高,比如100>1,也就是100的是会被系统自动选择。

向系统注册python3.8.2:

$ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.8 2

向系统注册python3.9:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 3

查看python所有配置:

$ sudo update-alternatives --display python

在这里插入图片描述
auto mode就是最高优先级的版本,如果要修改已经设置的优先级,重新使用注册命令,设置新的优先级就可以了。

切换python的配置:

$ sudo update-alternatives --config python

问题1:

当出现 marshal data too short 时,说明当前系统使用的版本号有问题,需要切换版本(使用上面命令即可):
在这里插入图片描述
如果切换版本后,再执行repo sync后仍然报错,可以删掉python生成的文件后再重新执行:
在这里插入图片描述

rm -rf __pycache__
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值