先阅读文末的2篇参考文档
对用版本的镜像及编译顺序:libffi-3.4.3.tar.gz(为了python编译_ctypes模块);openssl-1.1.1.tar.gz(为了python编译_ssl模块);Python-3.7.9;setuptools-19.6.tar.gz、pip-8.0.2.tar.gz(这两个库在单板上使用python3 setup.py install安装)
编译错误修改:
//libffi相关
configure: error: "libffi has not been ported to riscv64-unknown-linux-gnu." ??????更换个高版本支持RISC架构的 https://github.com/libffi/libffi/releases
./configure CC=arc-buildroot-linux-gnu-gcc -host=arc-buildroot-linux-gnu --build=x86_64-linux-gnu target=arc-buildroot-linux-gnu --enable-shared --prefix=/home/book/sk/package/libffi/libffi-3.0.13/_dist
//openssl相关
./config no-asm shared no-async --prefix=/opt/openssl/openssl-1.1.g/build_arm --cross-compile-prefix=arm-linux-
修改makefile,去除掉 -m64和-m32选项
//python相关
INFO: Could not locate ffi libs and/or headers (libffi-dev的库找不到,需将其交叉编译出来的库和头文件放至检查编译链对应的目录 且用CPPFLAGS指定头文件的位置)
./configure CC=arc-buildroot-linux-gnu-gcc CXX=arc-buildroot-linux-gnu-g++ AR=arc-buildroot-linux-gnu-ar RANLIB=arc-buildroot-linux-gnu-ranlib --host=arc-buildroot-linux-gnu --build=x86_64-linux-gnu --target=arc-buildroot-linux-gnu --enable-shared --disable-ipv6 --with-system-ffi --with-openssl=DIR(交叉编译openssl的_dist目录) CPPFLAGS="-I/home/book/sk/archs-linux-glibc/host/arc-buildroot-linux-gnu/include" ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no --enable-optimizations --prefix=/root/book/python/Python-3.7.9/_dist
_ssl模块编译配置
--with-openssl=DIR 交叉编译openssl的_dist目录即可
若仍不能编译_ssl模块再加上下图的修改,执行python的configure之后,vi ./Modules/Setup.dist
其它及参考文档:
(37条消息) 一、python3移植到嵌入式系统中(交叉编译python3)_python3交叉编译_lqjjdx的博客-CSDN博客
(37条消息) python3.7移植到ARM开发板_python-3.7移植arm_郭晋熙的博客-CSDN博客
//setuptools相关
python setup.py install ;安装结束之后,在cmd中输入 easy_install 来测试是否安装成功
//pip的安装依赖于setuptools;
//3.1 临时使用清华镜像来安装某个Python3的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple <PACKAGE>
//当然你若嫌弃每次打包整个python,可以单独编译出egg文件 python3 setup.py build
egg 文件在当前目录下的dist中,然后拷贝.egg文件到开发板中/opt/python/lib/python3.7/site-packages,运行sh xx.egg文件,前提python已经安装zlib模块(若你的移植的python支持zlib,则将egg拷贝到开发板中通过sh命令解压);否则
在虚拟机中用unzip setuptools-41.0.egg 命令解压,python setuptools-41.0.py
//ssh交叉编译