交叉编译python3.6.6一直到arm上

1、由于以前没有接触过关于这方面问题,在工作初,在网上搜资料,但是网上资料五花八门的,于是我自己花了三天一步步的移植成功,在此,我把它的移植过程整理如下:
2、编译问题。

(1)编译使用编译 主机自带的交叉编译工具链(64位)编译中出错,通过查资料发现原因是没有在主机上安装相应的pthon3.6.6.

解决方法: 在官网上下载对应的版本的tar包,然后按照如下步骤编译安装。

  1. ./configure

  2. make

  3. make install

(2). 配configure的参数, cnfigre (CCx… 时,出错,原因是没有提前让生成解释器。在这里需要注意指定路径(prefix)) ,否则最后就会默认安装到/usr/bin下,导致移档缺少基本库。

解决方法: Make Parse/pgen生成解释器

(3) Make时, 出错, 原因是没有清理以前编译时一 些没有用的文件.

解决方法: make clean

(4)Make install时 ,可能会出现subprocess.CalledProcessErrorC ommand '( ‘lsb release,‘a’ )’ returned non-zero exit statas 1.的错误。

解决方法:执行命令rm -rf /usr/bin/lsb release可以解决这个问题。此时需要在make dlean下,然后在执行make & make install.

(5)把交叉编译成功的的mybuild文件移植arm板中。可以放到/opt下面,不过要建立软连接,否则只能在mybuild/bin执行python3才会显示成功。其中还有一些问题, 由于编译主机自带交又编译的工具链的版本比较高,交叉编译成功的python移植到arm板上和arm上自带的一个基本库glibc2.19不匹配。导致直提醒缺少glibc2.25库。 经过不断的尝试和咨询:最后得出解决方法有两种,一 种是吧动态库变成静态库,但是可行性不高,系统容易死掉,几乎所有东西的运行都依赖的glibc库。第二种,更换工具链,换成和arm板相匹配的工具链,可行性高,但是在此过程中还得注意一个问题, 那就是编译主机的环境要和arm板相匹配的工具链(32位)一致, 否则也会报错。通过不断尝试和更换不同的工具链得出的结论。

3、总结

整体分为三大步骤:

1、 直接编python,生python的解程器.如果虚权机没有安装ptho3.6.6,那么安装pthon3.6.6

2、交叉编译python

3、 复制可移植文件到arm

具体步骤:

1)选择arm匹配的工具链,和下载python对应的包。

2)解压python3.6.6.tar.gz.

  1. 编译出解释器: ./configure make (make Parser/pgen) make install

  2. mkdir mybuild

5)配置configure 的参数:主要参数: CC=arm-none linux -gnueabi-gcc CXX= arm none linux gnueabi-gc+ + AR=arm none linux -gnueabi-ar RANLIB=arm-none linux -gnueabi-ranlib - host= arm-none -linux- gnueabi一build=x86_ 64 --disable ipv6

ac_ CV_ file_ dev_ ptmx=no ac CV file_ dev_ ptm=no -
–prefix= $(pwd)/mybuild

  1. make

  2. make install

8)找到mybuild文件,文件夹里主要有四个文件: bin share lib incude 把他们压缩成tar包,然后把他们复制到arm系统下/opt 下指定软连接。验证是否成功,

注释: CC为指定的C交叉编译器

CXX为指定C+ +交叉编译器。

AR为ar工具。

RANLIB为ranlib工具。

host为目标主机,交叉编译工具链的前缀。

build为编译环境主机。

prefix为安装路径。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值