一、python下载网址: http://www.python.org/ftp/python/

二、python的交叉编译依赖openssl ,openssl的下载网址: https://www.openssl.org/source/old/

三、编译:
1、交叉编译 openssl-1.0.2g

# /home/sw/openssh/openssl-1.0.2g
# mkdir build
# ./config --prefix=/home/sw/openssh/old/openssl-1.0.2g/build os/compiler:aarch64-linux-gnu-gcc -fPIC
# make
# make -i install

2、交叉编译python

# tar -xvf Python-2.7.7.tar.xz
# cd Python-2.7.7
# mkdir arm_build (存放交叉编译的信息)
# mkdir local_build (存放本地编译的信息)

# cd Python-2.7.7/

(1)首先本地编译pgen

# ./configure --prefix=/home/carrie/python/Python-2.7./local_build/
# make
# make install
# cp Parser/pgen arm_build/
# make clean

(2)交叉编译python

# vi Modules/_ctypes/libffi/fficonfig.py.in
ffi_platforms = {
'AARCH64': ['src/aarch64/ffi.c', 'src/aarch64/sysv.S'], ##增加这一行
'MIPS_IRIX': ['src/mips/ffi.c', 'src/mips/o32.S', 'src/mips/n32.S'],
# ./configure --prefix=/Python-2.7./arm_build/ --host=aarch64-linux-gnu --build=x86_64-linux-gnu CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar LD=aarch64-linux-gnu-ld ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --disable-ipv6 # vim Makefile
   LDFLAGS= -L/home/sw/openssh/old/openssl-1.0.2g/build/lib #找到LDFLAGS,在LDFLAGS后面增加这一串字符
# make
# make -i install

四、编译过程中遇到的错误:

(1)#./configure --prefix=/home/python/Python-2.7.7/build/ --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar --without-gcc

checking build system type... x86_64-unknown-linux-gnu
checking host system type... aarch64-unknown-linux-gnu
configure: error: Cross compiling required --host=HOST-TUPLE and --build=ARCH

原因:缺少--build的设置

解决方法:#./configure 后面加上 "--build=x86_64-linux-gnu "

(2)#./configure --prefix=/home/python/Python-2.7.7/build/ --host=aarch64-linux-gnu --build=x86_64-linux-gnu CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar --without-gcc

Fatal: You must get working getaddrinfo() function.
or you can specify "--disable-ipv6".

解决方法:./configure 后面加上 "--disable-ipv6"

(3)# ./configure --prefix=/home/python/Python-2.7.7/build/ --host=aarch64-linux-gnu --build=x86_64-linux-gnu CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar --disable-ipv6

checking for /dev/ptmx... not set
configure: error: set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling

解决方法: ./configure后面加上 "ac_cv_file__dev_ptmx=no"

(4)#./configure --prefix=/home/python/Python-2.7.7/build/ --host=aarch64-linux-gnu --build=x86_64-linux-gnu CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar --disable-ipv6 ac_cv_file__dev_ptmx=no

checking for /dev/ptc... not set
configure: error: set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling

解决方法:./configure后面加上 "ac_cv_file__dev_ptc=no"

(5)编译出错:

# make

make[1]: Leaving directory '/home/python/Python-2.7.7'
Parser/pgen ./Grammar/Grammar Include/graminit.h Python/graminit.c
Parser/pgen: 1: Parser/pgen: Syntax error: "(" unexpected
Makefile:616: recipe for target 'Include/graminit.h' failed
make: *** [Include/graminit.h] Error 2

解决方法:编译Parser/pgen :

# ./configure

# make python Parser/pgen

# cp Parser/pgen build/Parser/

(6)交叉编译产生的错误及解决方法:

#make
Failed to build these modules:
_bisect _codecs_cn _codecs_hk
_codecs_iso2022 _codecs_jp _codecs_kr
_codecs_tw _collections _csv
_ctypes _ctypes_test _elementtree
_functools _hashlib _heapq
_hotshot _io _json
_locale _lsprof _multibytecodec
_multiprocessing _random _socket
_ssl _struct _testcapi
array audioop binascii
cmath cPickle crypt
cStringIO datetime fcntl
future_builtins grp itertools
math mmap nis
operator parser pyexpat
resource select spwd
strop syslog termios
time unicodedata
running build_scripts

解决方法:
# vim Makefile
77 LDFLAGS= -L/home/sw/openssh/old/openssl-1.0.2g/build/lib   #增加这一串字符

交叉编译python2.7.7的更多相关文章

  1. 交叉编译Python-2.7.13到ARM(aarch32)—— 支持sqlite3

    作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 环境 主机: ubuntu14.04 64bit 开发板: qemu + vexpress-a9 (参考: ...

  2. 交叉编译Python-2.7.13到ARM(aarch64)平台

    方法跟交叉编译Python-2.7.13到ARM(aarch32)平台基本一样, 不同的地方只是把工具链换成编译aarch64的工具链,这里可以参考用qemu搭建aarch64学习环境. 创建目录: ...

  3. 交叉编译Python-2.7.13到ARM(aarch32)平台

    作者:彭东林 邮箱:pengdonglin137@163.com QQ:405728433 环境 主机: ubuntu14.04 64bit 开发板: qemu + vexpress-a9 (参考: ...

  4. 移植Python3到TQ2440(一)

    平台 硬件:TQ2440  64MB内存 256MB NandFlash bootloader:U-Boot 2015.04 kernel:linux-4.9 Python: Python-3.6.0 ...

  5. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

  6. (转)Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程) .

    声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...

  7. 交叉编译 小米路由器mini 的 python(MIPS)

    看了很多文章,要么说的是用opkg安装python,要么说的是小米路由器的交叉编译,就是没有mini的.学习了这篇文章(http://me.deepgully.com/post/56389167868 ...

  8. Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)

    原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因 ...

  9. Python的交叉编译移植至arm板

    虽然网上有那么多python的交叉编译移植教程,但是方法差异蛮大,需要根据实际开发板的型号做调整,以下是适用于海思的板子移植过程. step 1. python版本从网上下就可以: step 2. 解 ...

随机推荐

  1. vue.js 中双向绑定的实现---初级

    1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <h ...

  2. 跨域(四)——document.domain

    浏览器有一个合法的性质:一个页面可以设置document.domain为当前子域或比当前子域更高级的域.一般顶级就到了根域,如果设置为其他域,浏览器就会报权限错误. 利用这个性质,我们可以通过设置do ...

  3. Dos命令快速设置ip、网关、dns地址

    netsh interface ip set address name="本地连接" source=static 192.168.1.8 255.255.255.0 192.168 ...

  4. Linux tr命令使用方法

    tr命令主要用于删除文件中控制字符或进行字符转换.本文主要介绍tr命令的基本语法和使用实例. tr基本语法 tr命令格式:tr [ -d ] [ -c ] [ -s ] [ 字符串1 ] [ 字符串2 ...

  5. bat脚本基础教程

    bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上.本文主要介绍bat脚本基础语法,希望完成本文内容学习之后具备基础的bat脚本开发能 ...

  6. redmine安装-BitNami 提供的一键安装程序

    redmine安装-BitNami 提供的一键安装程序          博客分类: REDMINE redmine安装redmine一键安装bitNami redmine  BitNami 提供re ...

  7. 主流浏览器 Cookie 的大小

    目前测试的两种浏览器:Chrome 和 IE . 环境:IIS 7.5 只创建了站点,未做任何配置. Chrome : v36.0.1985.143 m 单个 Cookie 的长度为 4069 个字符 ...

  8. opencv对手写数字进行无黏连切割

    //src:待分割的二值图,最大值为255 //segMat:分割好的每个图片 //算法:判断连通域,有几个连通域就会分割成几个子图片 //用途:手写数字识别中进行无黏连数字的分割 void getC ...

  9. XML 可扩展标记语言

    因 为XML实在是太重要了,而且被广泛应用!不论是数据存储,还是其他方面,如配置文件等.XML是一种对独立于任何编程语言的数据进行编码的机制.在数据 交换领域,正在变得非常流行!因为他的基于节点的存储 ...

  10. 使用yii\filters下的比如\PageCache需要在web.php里面的组件上配置'cache' => [ 'class' => 'yii\caching\FileCache', ],

    public function behaviors(){ /*需要在config文件下的web.php里面加上 'cache' => [ 'class' => 'yii\caching\F ...