Máquina virtual Ubuntu20.04.4 (X86_64) Qt5.14.2 configuración Jetson nano (ARM64) entorno de compilación cruzada (completado) + imagen Dokcker (en proceso)

Configure el entorno de compilación cruzada Qt5.4.2 de la máquina virtual x86_64 (Ubuntu 20.04) y Jetson nano ARM64 (Ubuntu 18.04).El entorno de hardware específico es el siguiente:

VMware virtual machine (X86_64) inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Jetson nano (aarch64)
inserte la descripción de la imagen aquí
referencia principal del proceso:
Ubuntu20.04.1 (X86_64) Qt5.14.2 configuración ARM64 entorno de compilación cruzada
JetsonNano QT5.12.9 compilación cruzada y construcción del entorno

1. Configuración del entorno de compilación cruzada:

1.1 Instale Qt 5.14.2 en la máquina virtual (es más recomendable realizar las secciones 1.2 y 1.3 antes de instalar Qt)

  • Ejecute el programa .run directamente, y el programa descargará
    el archivo por sí mismo. La dirección de descarga
    inserte la descripción de la imagen aquí
    aparecerá en la interfaz para la instalación. La ubicación es la siguiente, y puede elegir usted mismo:
    inserte la descripción de la imagen aquí
    si no está seguro de lo que necesita, instalar todos los componentes. Una vez completada la instalación, Qt se puede iniciar normalmente.
    inserte la descripción de la imagen aquí
    Verifique la ruta de instalación: puede ver que solo gcc_64
    inserte la descripción de la imagen aquí

1.2 Instale el compilador ARM64 y cree un entorno de compilación cruzada Jetson nano

Referencia:
ubuntu16.04 instalar la herramienta de compilación cruzada aarch64-linux-gnu-gcc/g++
Entorno de compilación cruzada NVIDIA Jetson NX Ubuntu18.04

  • Primero verifique la versión del sistema y la versión del editor de Jetson nano: gcc / g ++ --version o gcc / g ++ -v, se
    inserte la descripción de la imagen aquí
    puede ver que es ubuntu 18.04 y aarch64-linux-gnu
    Se ha confirmado que el cruce se puede realizar con éxito establecido en Ubuntu18.04 y 20.04
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí

1.2.1 Instalar aarch64 versión gcc y g++ en Ubuntu

gcc es el compilador GUN C ( compilador C ) en GCC g++ es el compilador GUN C++ ( compilador C++ ) en GCC Referencia: compilación cruzada de Ubuntu aarch64 versión qt

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

La instalación es la siguiente: verifique la versión
inserte la descripción de la imagen aquí
después de que se complete la instalación :

aarch64-linux-gnu-gcc -v

inserte la descripción de la imagen aquí
También puede ingresar aarch64 +TAB para verificar si la configuración es exitosa :
inserte la descripción de la imagen aquí

1.2.2 Prueba de compilación cruzada de aarch64 versión gcc y g++ en Ubuntu

Escribir una prueba de demostración simple

  • En la máquina virtual:
    inserte la descripción de la imagen aquí
	/*
	* test.cpp
	* for cplusplus
	* test aarch64-linux-gnu-g++
	*/
	# include<iostream>
	int main(int argc,char **argv)
	{
    
    
	    std::cout << "hello world!" <<std::endl;
	    return 0;
	}

Compilar en una máquina virtual :

aarch64-linux-gnu-g++ test.cpp -o test

inserte la descripción de la imagen aquí
Obviamente, no se puede ejecutar aquí, y luego poner el archivo ejecutable generado en la placa integrada para ejecutarlo.Si los permisos no son suficientes, recuerde agregar permisos


  • inserte la descripción de la imagen aquí
    ¡La configuración del entorno de compilación cruzada en la placa de desarrollo Jetson nano es exitosa! ! ! , puede ver el tipo de archivo de la siguiente manera, es un archivo ejecutable ARM
    inserte la descripción de la imagen aquí

1.3 Compile el código fuente de Qt (compile la cadena de herramientas de la plataforma arm64 correspondiente)

Solución: debido a que Jetson nano tiene menos recursos, configure el entorno de compilación ARM64 en su propia PC, configure el entorno de compilación cruzada Qt y luego use Qt para compilar el código que escribió. Después de compilar en la PC, cópielo para ejecutarlo en el plataforma BRAZO

1.3.1 qt-everywhere-src-5.14.2.tar.xz Código fuente Qt

Dirección de descarga del archivo comprimido del código fuente
inserte la descripción de la imagen aquí
Luego, descomprima el paquete comprimido 1 para obtener la carpeta 2.

1.3.2 Modificar el archivo de configuración de la compilación

Referencia:
Compilación cruzada de Ubuntu aarch64 versión qt
JetsonNano QT5.12.9 compilación cruzada y construcción del entorno

  • Modifique el archivo qmake.conf ubicado en la
    ubicación del código fuente:qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf
    inserte la descripción de la imagen aquí
  • El contenido del archivo es el siguiente:
    inserte la descripción de la imagen aquí
    La herramienta en el cuadro rojo de arriba debe ser coherente con su propia herramienta de compilación cruzada, de lo contrario, la compilación fallará.
    Agregue el siguiente contenido y modifíquelo: ¿Por qué lo cambia así? Lo estudiaré más tarde **qmake.conf**Para la función de parámetro, consulte Qt5.12.11 compilación cruzada + ARM_aarch64 de 64 bits + Allwinner H5 CortexA53
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

La modificación es la siguiente (Jetson-nano es arquitectura armv8):
inserte la descripción de la imagen aquí

1.3.3 Comience a compilar (la configuración en esta sección es incorrecta temporalmente y la configuración no ha sido exitosa, consulte directamente 1.3.4)

Ingrese al directorio del código fuente cd qt-everywhere-src-5.14.2, cree el archivo autoConfigure.sh para configurar las opciones de compilación

cd qt-everywhere-src-5.12.9/
touch autoConfigure.sh
chmod 777 autoConfigure.sh

El contenido es el siguiente:

#!/bin/sh
./configure \
-prefix /home/feiyangqu/myFile/Qt/Qt5.14.2-aarch64 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-sse2 \
-no-cups \
-no-glib \
-no-dbus \
-no-opengl \
-no-xcb \
-no-separate-debug-info \
  • Ejecutar directamente en el directorio del código fuente, es decir, el directorio donde se encuentra el archivo autoConfigure.sh ./autoConfigure.sh, y luego compilar los problemas que encontré y solucionarlos:
  • Encontró un problema:
    parece que no tiene 'make' o 'gmake' en su RUTA.
    No puede continuar.
    inserte la descripción de la imagen aquí
    Solución: Instale los componentes de compilación sudo apt-get install build-essentialpara que se ejecuten correctamente
    inserte la descripción de la imagen aquí
  • Luego vuelva a hacer, se produce un error: ERROR del proyecto: compilar QtQml requiere Python.
    inserte la descripción de la imagen aquí
    Referencia: Python y compilar qtqml requiere Python no se puede encontrar al compilar Qt desde el código fuente. La solución es la siguiente:

    inserte la descripción de la imagen aquí

1.3.4 Comience a compilar (¡lea esta sección antes de compilar! Verifique los errores que encuentre de antemano)

Hubo muchos errores en la operación anterior ./autoConfigure.sh, por lo que la terminal usó directamente la siguiente declaración y luego make:

sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libclang-dev
  • Luego, el terminal ingresa a la carpeta del código fuente y ejecuta el siguiente comando para configurar
./configure -prefix /home/feiyangq/myFile/Qt/Qt5.14.2-aarch64 -make libs -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtdeclarative
-prefix 是QT编译后文件目录

-xplatform 是arm编译器类型,在qtbase/mkspecs目录下,根据自己交叉编译工具进行相应的替换

-no-opengl 跳过编译openGL(因为我已经安装了Qt,所以不需要界面)

-skip qtdeclarative 跳过 qtdeclarative(不跳过,编译出错,出错的原因不清楚)

如果有别的需求,可以./configure -help查看具体命令
  • Preste atención a la información que se muestra en la terminal y agregue la biblioteca (se ha agregado antes, esta es una captura de pantalla del error antes de agregar): El éxito de
    inserte la descripción de la imagen aquí
    make es el siguiente:inserte la descripción de la imagen aquí
    Luego 直接make install, puede ver la instalación que especificamos en la posición del parámetro -prefix en el directorio de configuración anterior: ¡ /home/feiyangq/myFile/Qt/Qt5.14.2-aarch64
    inserte la descripción de la imagen aquí
    La instalación se realizó correctamente! ! !
    inserte la descripción de la imagen aquí

Entorno de compilación cruzada de configuración de 1.4 Qt

1.4.1 Abra Qt, agregue el compilador ARM64 manualmente

Agregue la versión arm qt recién compilada e instalada en qt Creator . Para conocer los pasos detallados, consulte: Ubuntu20.04.1 (X86_64) Qt5.14.2 Configurar el entorno de compilación cruzada ARM64
Pero abra la parte del compilador, ya puedo ver la compilación arm64 en Auto -dispositivo detectado. Puede ser porque primero compilé el código fuente y luego instalé Qt con el archivo de ejecución:
inserte la descripción de la imagen aquí
agregué el compilador C/C++ de GCC aarch64-linux-gnu-gcc / g++y revisé aarch64-linux-gnu-cpp curiosamente, cpp es el preprocesador C (preprocesador):
inserte la descripción de la imagen aquí

  • Compruebe la ubicación del compilador y estudie usr/el directorio:
    inserte la descripción de la imagen aquí
    Investigación sobre el directorio usr: ¿ Cuál es el significado de ?el directorio /usr del sistema Linux
    usr en Puntos de resumen :


    1. Sin cambiar el archivo de configuración, la aplicación instalada por la herramienta Automake se instalará en /usr/local/el directorio;
    2. usr es la abreviatura de Unix Software Resource, que es el directorio donde se ubican los recursos de software del sistema operativo Unix, en lugar de los datos del usuario; todo el software predeterminado del sistema se ubicará en /usr, y este directorio ocupará la mayor parte del disco duro capacidad cuando el sistema está instalado
    3. /binSon algunas instrucciones del sistema. /sbinGeneralmente se refiere al comando de superusuario. /usr/bin Es el script en ejecución de algún software que instaló más tarde. /usr/sbinColoque algunos programas necesarios para la administración del sistema instalados por los usuarios, tales como: dhcpd, httpd, imap, in.*d, inetd, named, netconfig, squid, swap, tcpd, tcpdump, etc.
    4. Cuando el sistema recién instalado ejecuta algunos comandos normales, como apagado y fdisk, muestra: bash: comando no encontrado . Luego, primero debemos considerar si estas variables de entorno se han incluido en root . $PATHPuede verificar la RUTA , si lo es: PATH=$PATH:$HOME/bindebe agregar lo siguiente:PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
    5. Vea los archivos relacionados con aarch en usr/bin/
      inserte la descripción de la imagen aquí
      y luego mire la carpeta aarch64-linux-gun en usr/
      inserte la descripción de la imagen aquí
      : ingrese la carpeta para ver el contenido de la siguiente manera:
      inserte la descripción de la imagen aquí

1.4.2 Agregar versiones de QT

En Versiones de QT, agregue la versión de compilación cruzada de Qt obtenida al compilar el código fuente antes :
inserte la descripción de la imagen aquí

1.4.2 Añadir kits de construcción (Kits)

inserte la descripción de la imagen aquí

1.5 Cree un nuevo proyecto y compile, y pruebe si tiene éxito

1.5.1 Nuevo proyecto y compilación

  • Cree un nuevo proyecto y seleccione el kit aarch64 cuando se seleccionen los kits:
    inserte la descripción de la imagen aquíbuild Cree el proyecto y la carpeta del proyecto obtenido es la siguiente:
    inserte la descripción de la imagen aquí
  • Ver propiedades del archivo: ¡Verificación exitosa! ! !
    inserte la descripción de la imagen aquí

1.5.2 Transfiera el archivo a la placa de desarrollo Jetson nano para realizar pruebas

Instalación y prueba de Qt de Jetson nano: continuará. . . .

2. Configurar el entorno de compilación cruzada en Docker

2.1Instalación de la ventana acoplable

Consulte el artículo: Instalación de Docker (Ubuntu 20.04 LTS) (incluida la introducción a la documentación oficial)
que continuará. . . . .
Se ha abierto un hueco y se seguirá actualizando a medida que avance el proyecto.

Supongo que te gusta

Origin blog.csdn.net/qq_22487889/article/details/127967511
Recomendado
Clasificación