Compilar y trasplantar pitón al tablero del brazo (1)

antecedentes:

  La vida es corta, uso Python. Si puede ejecutar Python en el tablero del brazo, podemos hacer muchas cosas de manera fácil y feliz.

Descripción:

  La compilación de la versión incrustada de Python requiere un intérprete para analizar setup.py para compilar el módulo de Python, por lo que primero debe compilar el intérprete de host. (Un poco como el lenguaje Go)

  Python    :  Python 3.7.6

Compilar:

Cree un nuevo directorio python3.7 en inicio y cree un nuevo script make.sh en python3.7.

cd ~
mkdir python3.7
cd python3.7
nano make.sh

Para compilar, use este script de compilación con un solo clic, copie el siguiente contenido en make.sh, BUILD_HOST debe cambiarse a su propio compilador cruzado:

#!/bin/sh
BASE=`pwd`
BUILD_HOST=arm-himix200-linux


OUTPUT=${BASE}/install/

make_dirs() {
    cd ${BASE}
    mkdir  compressed  install  source -p
    sudo ls
}

tget () { #try wget
    filename=`basename $1`
    echo "Downloading [${filename}]..."
    if [ ! -f ${filename} ];then
        wget $1
    fi

    echo "[OK] Downloaded [${filename}] "
}


download_package () {
    cd ${BASE}/compressed
    #下载包
    tget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
}

tar_package () {
    cd ${BASE}/compressed
    ls * > /tmp/list.txt
    for TAR in `cat /tmp/list.txt`
    do
        tar -xf $TAR -C  ../source
    done
    rm -rf /tmp/list.txt
}

make_host () {
    cd ${BASE}/source/Python*
    ./configure
    make && sudo make install
    sudo rm /usr/bin/python
    sudo ln -s /usr/local/bin/python3 /usr/bin/python
}
make_target () {
    cd ${BASE}/source/Python*
    echo `pwd`
    sudo make clean
    mkdir build-${BUILD_HOST} -p
    cd  build-${BUILD_HOST}
    mkdir ${BASE}/install/python -p
    ../configure CC=${BUILD_HOST}-gcc \
    CXX=${BUILD_HOST}-g++ \
    --host=${BUILD_HOST} \
    --build=x86_64-linux-gnu \
    --target=${BUILD_HOST} --disable-ipv6 \
    --prefix=${BASE}/install/python \
    --enable-optimizations \
    ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=yes
    make && make install
}
make_dirs
download_package
tar_package
#make_host #如果没有的话,需要安装
make_target

Compruebe si el python nativo es python3.7, si no es necesario eliminar el comentario make_host, compilar python3.7, guardar y salir, y ejecutar make.sh.

./make.sh

Nota: Algunos comandos en el script requieren permiso de sudo y el proceso de ejecución requiere una contraseña, pero no puede sudo ./make.sh para evitar problemas, de lo contrario causará problemas de permisos de archivos y hará que el compilador cruzado no pueda ejecutarse.

desplegar:

Coloque el directorio de Python compilado en la placa de destino y agregue las siguientes variables de entorno:

(Suponiendo que el directorio de python se coloca en / mnt / nfs / python)

export PATH=$PATH:/mnt/nfs/python/bin   # 用于执行python,填写 Python目录中的Bin目录即可
export PYTHONPATH=               # 这一行是为了额外的模块的搜索,根据实际模块的使用情况进行填写,可留空,可参考附录进行填写
export PYTHONHOME=/mnt/nfs/python      # 最终的安装路径,必须填写
  • Las variables de entorno se pueden escribir al final del archivo / etc / profile, ejecute source / etc / profile para habilitar.

(Si no lo agrega, resultará; puede consultarlo aquí: De acuerdo con: https://askubuntu.com/questions/905372/could-not-find-platform-independent-libraries-prefix)

Fatal Python error: initfsencoding: unable to load the file system codecModuleNotFoundError: No module named 'encodings'Current thread 0xb6f28000 (most recent call first):Aborted有关的解释是这样的:
  •  

Deben establecerse dos variables de entorno PYTHONPATH y PYTHONHOME. Debido a que el intérprete de python3 se basa en estas dos variables cuando busca bibliotecas relacionadas:

PYTHONPATH como la ruta de búsqueda predeterminada para el módulo (la variable PYTHONPATH aumenta la ruta de búsqueda predeterminada para los archivos del módulo).

PYTHONHOME se usa para bibliotecas de Python estándar.

El formato de configuración de variables puede estar en formato de shell. Por ejemplo, las variables de entorno que configuro son las siguientes:

export PATH=$PATH:/mnt/python/python3.7/bin
export PYTHONPATH='/mnt/python/python3.7:/mnt/python/python3.7/lib:/mnt/python/python3.7/lib/python3.7/site-packages'
export PYTHONHOME=/mnt/python/python3.7

Ahora puede escribir python en el terminal de la placa y presionar la tecla tab para completar automáticamente a python3, lo que indica que la variable de entorno se configuró correctamente, ejecutar python3 para ingresar repl, y python se puede ejecutar normalmente como se muestra a continuación.

      Sin embargo, algunos módulos básicos no se han trasplantado, y muchos módulos dependerán más adelante. Puede ingresar ayuda ('módulos') en la respuesta para ver los módulos existentes. Actualmente, faltan módulos como zlib, _ctypes y _ssl. Necesario para implementar pip. Entre ellos, _ctypes es un módulo dependiente de setuptools. Con setuptools, también podemos descargar módulos de terceros en la placa e instalarlos manualmente. En versiones anteriores a python3.7, _ctypes se puede compilar con python sin portar adicionales. .

Los artículos posteriores continuarán hablando sobre cómo trasplantar estos módulos necesarios.

Supongo que te gusta

Origin blog.csdn.net/qq_34440409/article/details/109287326
Recomendado
Clasificación