交叉编译Python-3.6.8

准备

平台

安装 python3.6
安装 交叉编译器(按实际工程安装对应版本,这里是gcc 版本 8.2.1 20180802 (GNU Toolchain for the A-profile Architecture 8.2-2018-08 (arm-rel-8.23))

源码

Python-3.6.8.tgz
zlib-1.2.11.tar.xz
openssl-1.1.1d.tar.gz

交叉编译

zlib

脚本

build.sh
#! /bin/bash

wget https://udomain.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.xz

tar xvf zlib-1.2.11.tar.xz

chmod +x run.sh
cp run.sh  zlib-1.2.11/

cd zlib-1.2.11
./run.sh
run.sh
#! /bin/bash

COMPILER_PATH=/home/sigmastar/sigmastar/SSD20x/gcc/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin

SYS_LIB_DIR=$COMPILER_PATH/../arm-linux-gnueabihf/libc/usr

export PATH=$PATH:$COMPILER_PATH

export CC=arm-linux-gnueabihf-gcc

INSTALL_PATH=`pwd`/zlib_install
mkdir $INSTALL_PATH
./configure --prefix=$INSTALL_PATH

make
make install

ls $INSTALL_PATH

cp -rvf $INSTALL_PATH/* $SYS_LIB_DIR/

编译

chmod +x build.sh
./build.sh

输出

 ls zlib-1.2.11/zlib_install/
include  lib  share

openssl

build.sh
#! /bin/bash

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

chmod +x run.sh
tar xvf openssl-1.1.1d.tar.gz
cp run_arm.sh openssl-1.1.1d
cd openssl-1.1.1d
./run.sh
run.sh
#! /bin/bash

ARM_CROSS_TOOL=/home/sigmastar/sigmastar/SSD20x/gcc/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin

SYS_LIB_DIR=$ARM_CROSS_TOOL/../arm-linux-gnueabihf/libc/usr/


export PATH=$PATH:$ARM_CROSS_TOOL

OUT_TARGET=`pwd`/../openssl_arm
mkdir -p $OUT_TARGET

vcom=arm-linux-gnueabihf

export CC="$vcom"-gcc
export CPP="$vcom"-g++
export AR="$vcom"-ar
export LD="$vcom"-ld
export RANLIB="$vcom"-ranlib

LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
export LDFLAGS

./config \
no-asm \
shared \
--prefix=$OUT_TARGET


#delete MakeFile -m64
sed -i "s/-m64/ /g" Makefile

make
make install

echo "the output files is in $OUT_TARGET"

cp -rvf $OUT_TARGET/* $SYS_LIB_DIR/
echo "$SYS_LIB_DIR"
echo "finish"

编译

chmod +x build.sh
./build.sh

输出

ls openssl_arm/
bin  include  lib  share  ssl

Python-3.6.8

build.sh
#! /bin/bash
#注意需要在PC中安装python3.6
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

tar xvf Python-3.6.8.tgz

chmod +x run.sh

cp run.sh Python-3.6.8/
cd Python-3.6.8
./run.sh
run.sh
#! /bin/bash

ARM_CROSS_TOOL=/home/sigmastar/sigmastar/SSD20x/gcc/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin

SYS_LIB_DIR=$ARM_CROSS_TOOL/../arm-linux-gnueabihf/libc/usr/


export PATH=$PATH:$ARM_CROSS_TOOL

OUT_TARGET=`pwd`/../python_arm
mkdir -p $OUT_TARGET

vcom=arm-linux-gnueabihf

#注意是CXX不是CPP
export CC="$vcom"-gcc
export CXX="$vcom"-g++
export AR="$vcom"-ar
export LD="$vcom"-ld
export RANLIB="$vcom"-ranlib
export STRIP="$vcom"-strip

LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
export LDFLAGS

HOST_PLATFORM=arm-linux-gnueabihf
BUILD_ARCH=arm

./configure \
	--host=$HOST_PLATFORM \
       	--build=$BUILD_ARCH \
	--disable-ipv6 \
	ac_cv_file__dev_ptmx=no \
	ac_cv_file__dev_ptc=no \
	--prefix=$OUT_TARGET

grep ZLIB_LIB Modules/Setup.dist
if [ $? -ne 0 ];then
	sed -i '$a \n\SSL_LIB=/home/sigmastar/sigmastar/python/openssl/openssl_arm\n_ssl _ssl.c -DUSE_SSL -I$(SSL_LIB)/include -I$(SSL_LIB)/include/openssl -L$(SSL_LIB)/lib -lssl -lcrypto\nZLIB_LIB=/home/sigmastar/sigmastar/python/zlib/zlib-1.2.11/zlib_install\nzlib zlibmodule.c -I$(ZLIB_LIB)/include -L$(ZLIB_LIB)/lib -lz\n' Modules/Setup.dist
fi

sudo mv /usr/bin/lsb_release /usr/bin/lsb_release_ 

make -j12
make install

ls $OUT_TARGET

sudo mv /usr/bin/lsb_release_ /usr/bin/lsb_release

根据需要修改交叉编译器SSL_LIBZLIB_LIB的路径。

编译

chmod +x build.sh
sudo ./build.sh

输出

ls python_arm/
bin  include  lib  share
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值