Aquí primero hago una compilación cruzada de curl para solicitar el servidor web. Esto se utiliza principalmente para descargar la herramienta pip. Si su placa de desarrollo tiene el comando curl, no necesita compilarlo; o puede descargar directamente el paquete pip correspondiente a la placa de desarrollo en la página web sin usar el comando curl.
Este blog es equivalente a una extensión del trabajo anterior en ubuntu, basado en la plataforma Qt, que llama archivos python y realiza una compilación cruzada para ejecutarlos en la placa de desarrollo integrada de Linux . Antes solo compilé Python de forma cruzada y no compilé bibliotecas de terceros de Python. Así que aquí ya está predeterminado que tienes Python compilado de forma cruzada. Mi ruta de compilación cruzada es: /home/book/arm-python; la ruta de todos mis paquetes de instalación es /home/book/pyarm . Entonces, si no se refiere a Python con compilación cruzada en mi blog, modifique usted mismo la ruta que aparece en el siguiente comando por la ruta relacionada con la compilación cruzada de Python .
1.2 Antecedentes de compilación
Cadena de herramientas de compilación cruzada: gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
plataforma ubuntu: ubuntu18.04.1 64 bits
Núcleo de placa de desarrollo de Linux integrado: NXP CORTEX-A7 IMX6ULL
1.3 Pasos
Curl de compilación cruzada
Utilice crossenv para realizar una compilación cruzada de la biblioteca de terceros de Python numpy
Configure el entorno de compilación: ./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-zlib= / home/book/arm-python --with-ssl=/home/book/arm-python --enable-shared --disable-threaded-resolver --prefix=$(pwd)/tmp Nota: aquí curl depende de openssl y zlib. Para realizar una compilación cruzada de openssl y zlib, puede consultar el blog : En ubuntu, basado en la plataforma Qt, llame al archivo Python, compílelo en la placa de desarrollo de Linux integrada y ejecútelo.
hacer
hacer la instalación
Migre todo el contenido en /home/book/pyarm/curl-7.87.0/tmp/ al directorio de la placa de desarrollo /home/book/arm-python. Porque el directorio de mi Python compilado de forma cruzada en la placa de desarrollo es /home/book/arm-python. Modifíquelo a su propio directorio.
3. Utilice crossenv para realizar una compilación cruzada de la biblioteca de terceros de Python numpy
Todos los pasos aquí se realizan en Ubuntu, no en la placa de desarrollo .
El ubuntu que uso viene con python y python3. Generalmente, la máquina virtual instalada Ubuntu viene con Python. Si su máquina virtual no lo tiene, instale python3 de acuerdo con el tipo de máquina virtual. Por ejemplo, simplemente use el comando en ubuntu sudo apt-get install python3.
Instalar crossenv:pip3 install crossenv
Utilice crossenv para representar el entorno virtual de arm-python:python3 -m crossenv --without-pip /home/book/arm-python/bin/python3 cross_venv
cd cross_venv/cross/bin
Activar el entorno virtual:source activate
Descargue el paquete de instalación de pip: curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py -k. Debido a que la versión de python3 en mi ubuntu es 3.6, descargué get-pip.py en 3.6.
./python3 get-pip.py
Instale Cython en el entorno virtual cross_venv:./pip3 install Cython
Cree request.txt:, vi requirements.txtescriba numpy y el número de versión en él. La versión que descargué aquí es 1.13.3, así que escribo:
Compile numpy en un paquete de instalación en formato .whl: ./pip3 wheel --wheel-dir /home/book/arm-pylib -r requirements.txt. /home/book/arm-pylib es la ruta de almacenamiento del paquete numpy en formato .whl, puede elegirla arbitrariamente. Nota : Debido a que numpy de alto rendimiento depende de las bibliotecas lapack y atlas, cuando usa directamente el comando pip3 para realizar una compilación cruzada de numpy, buscará las bibliotecas lapack y atlas, pero no he encontrado un método adecuado para realizar la compilación cruzada. La biblioteca de Lapack aquí. Espero que lo sepas . Los socios son generosos con sus consejos . Afortunadamente, estas dos bibliotecas no son dependencias obligatorias para instalar el paquete NumPy, es decir, numpy compilado sin depender de las bibliotecas lapack y atlas funciona normalmente, pero el rendimiento es ligeramente peor. La solución es configurar la variable de entorno antes de la compilación de pip3 :
Tenga en cuenta que aquí usamos crossenv para realizar una compilación cruzada del sufijo de la biblioteca de terceros numpy es linux_arm, y nuestro tablero de destino es armv7l, por lo que aquí tenemos que cambiar manualmente numpy-1.13.3-cp36-cp36m-linux_arm.whl a numpy-1.13.3-cp36-cp36m-linux_armv7l.whl. De lo contrario, se informará un error. Para ver la arquitectura de la placa de desarrollo de Linux, utilice el comando en el terminal de comandos de la placa de desarrollo: uname -a.
4. Trasplante a la placa de desarrollo de Linux
Migre numpy-1.13.3-cp36-cp36m-linux_armv7l.whl al directorio /home/book/arm-python/bin. Porque el directorio de mi Python compilado de forma cruzada en la placa de desarrollo es /home/book/arm-python/bin. Modifíquelo a su propio directorio.
Instale pip3: ./python3 get-pip.py Aquí aparecerá un error : No se pudo recuperar la URL https://pypi.org/simple/pip/: Hubo un problema al confirmar el certificado SSL: HTTPSConnectionPool(host='pypi. org ', puerto=443): Número máximo de reintentos superados con la URL: /simple/pip/ (causado por SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] verificación fallida del certificado (_ssl.c:852)'),)) - omitiendo ERROR: No se pudo encontrar una versión que satisfaga el requisito pip<22.0 (de versiones: ninguna) ERROR: No se encontró una distribución coincidente para pip<22.0 significa: No se puede obtener contenido de la página web https://pypi.org/simple /pip/ . Solución: cambie a la dirección espejo nacional . ./python3 get-pip.py -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
Verificar pip3: lista ./pip3
Instale numpy: ./pip3 instale numpy-1.13.3-cp36-cp36m-linux_armv7l.whl -i http://pypi.douban.com/simple --trusted-host pypi.douban.com. Nota : si no desea especificar la fuente de la imagen para cada instalación, puede consultar el blog https://blog.csdn.net/qq591840685/article/details/116399374 para crear un archivo pip.conf para especificar la imagen. fuente.