zoukankan      html  css  js  c++  java
  • 交叉编译python2.7.7

    一、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.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.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
      77 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   #增加这一串字符

  • 相关阅读:
    android 如何添加第3方lib库到kernel中
    如何搭建modem编译环境
    /dev、/sys/dev 和/sys/devices 和udev的关系
    Makefile的obj-y 和 obj-m
    MTK Android添加驱动模块
    使用 /sys 文件系统访问 Linux 内核
    JNI设置C++与java的结合(2)
    android 常用方法集合
    操作系统(科普章节)
    前端面试之前要准备的那些事
  • 原文地址:https://www.cnblogs.com/carriezhangyan/p/9365455.html
Copyright © 2011-2022 走看看