简述
由于OpenEuler系统生态还不完善,官方并没有支持Python版本的OpenEuler Embedded嵌入式系统,因此需要手动编译Python开源代码并移植Python环境。
操作讲解
编译Python源码需要依赖zlib、ffi库,因此需要先编译zlib、ffi源码,编译完成后会生成对应的库文件和执行文件,将其移植到Python源码中。
操作流程
zlib交叉编译
zilb官网下载源码
./configure --prefix=$(pwd)/zlib_armmake ARCH=arm64 CROSS_COMPILE=aarch64-openeuler-linux-gnu- -j32make install
ffi交叉编译
ffi官网下载源码
./configure --prefix=$(pwd)/ffi_armmake ARCH=arm64 CROSS_COMPILE=aarch64-openeuler-linux-gnu- -j32make install
Python 3.10交叉编译
Python3.10源码
交叉编译zlib和ffi库后生成下列文件,将zlib、ffi生成的lib文件移植到Python3.10源码的lib-dynload目录下,因为在交叉编译时会搜寻该目录库文件进行构建。
#移植zlib、ffi库文件
cp zlib-1.3/zlib_arm/lib/libz.so* Python-3.10.12/build_arm/lib/python3.10/lib-dynload/
cp libffi-3.4.7/ffi_arm/lib/libffi.so* Python-3.10.12/build_arm/lib/python3.10/lib-dynload/
#指定使用的工具链为OpenEuler交叉工具链,文件安装路径
./configure --host=aarch64-openeuler-linux-gnu --build=x86_64-pc-linux-gnu --prefix=$(pwd)/build_arm --with-build-python=/usr/bin/python3.10
ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no
#编译源码
make ARCH=arm64 CROSS_COMPILE=aarch64-openeuler-linux-gnu- -j32
#进行安装
make install
#打包Python安装文件
tar -cvf Python3.10.tar build_arm/*
#移植到开发板/tmp目录并进行解压
tar -xvf Python3.10.tar -C Python3.10
#设置开发板环境变量 在/etc/profile文件中补充下面内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/Python3.10/build_arm/lib/python3.10/lib-dynload/
export PATH=$PATH:/tmp/Python3.10/build_arm/bin/
export PYTHONHOME=/tmp/Python3.10/build_arm
export PYTHONPATH=$PYTHONHOME/lib/python3.10
#使能环境变量
source /etc/profile
#验证是否安装成功
python3.10 --version