Python2.7.13交叉编译步骤

交叉编译Python2.7.13到ARM开发板上比较麻烦,以下是我交叉编译的步骤:
1.下载Python2.7.13源码包到Python_2.7.13_complier目录中,分别解压为Python-2.7.13_ARM, Python-2.7.13_PC

2.首先编译PC上的python, 比较简单:
    cd Python_2.7.13_complier/Python-2.7.13_PC 目录
    然后执行 ./configure --prefix=/opt/Python_2.7.13_PC
    然后 make && sudo make install
    
3.继续进行编译ARM上的python:
    cd Python_2.7.13_complier/Python-2.7.13_ARM目录
    首先修改setup.py,找到下面两句话并注释掉(如果不修改这两句话,交叉编译出来的python会缺少很多内建的库)
    if ext.name in sys.builtin_module_names:
      self.extensions.remove(ext)
      
    然后设置交叉编译工具链环境变量
    export CC=/usr/local/armv7-marvell-linux-gnueabi-hard-4.6.4/bin/arm-marvell-linux-gnueabi-gcc
    export CXX=/usr/local/armv7-marvell-linux-gnueabi-hard-4.6.4/bin/arm-marvell-linux-gnueabi-g++
    
    由于交叉编译中,需要明确如下两个变量的值,因此,这里必须人工定义。如果不设置的话,configure步骤会通不过。ptmx就是虚拟串口的意思,由于我的单板以后要用到这个,因此,设为yes。设为no一样是可以的。

    echo ac_cv_file__dev_ptmx=yes > config.site
    echo ac_cv_file__dev_ptc=yes >> config.site
    export CONFIG_SITE=config.site
    
    然后执行
    ./configure --prefix=/opt/Python_2.7.13_arm_hard --host=arm-marvell-linux-gnueabi --build=x86_64-linux-gnu --enable-ipv6 --enable-shared LDFLAGS="-L/opt/zlib_1.2.8/lib -L/opt/readline-6.3/lib -L/opt/openssl-1.0.1o/lib -L/opt/sqlite3/lib" CPPFLAGS="-I/opt/zlib_1.2.8/include -I/opt/readline-6.3/include -I/opt/openssl-1.0.1o/include -I/opt/sqlite3/include"
    
    继续执行
    make HOSTPYTHON=../Python-2.7.13_PC/python HOSTPGEN=../Python-2.7.13_PC/Parser/pgen BLDSHARED="/usr/local/armv7-marvell-linux-gnueabi-hard-4.6.4/bin/arm-marvell-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-marvell-linux-gnueabi-  CROSS_COMPILE_TARGET=yes HOSTARCH=arm-marvell-linux-gnueabi BUILDARCH=x86_64-linux-gnu  -j4
    
    最后执行
    sudo make install HOSTPYTHON=../Python-2.7.13_PC/python BLDSHARED="/usr/local/armv7-marvell-linux-gnueabi-hard-4.6.4/bin/arm-marvell-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-marvell-linux-gnueabi-  CROSS_COMPILE_TARGET=yes
    
    这样交叉编译的python就安装到了/opt/Python_2.7.13_arm_hard目录中。

你可能感兴趣的:(嵌入式开发)