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)
Jetson nano (aarch64)
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
aparecerá en la interfaz para la instalación. La ubicación es la siguiente, y puede elegir usted mismo:
si no está seguro de lo que necesita, instalar todos los componentes. Una vez completada la instalación, Qt se puede iniciar normalmente.
Verifique la ruta de instalación: puede ver que solo gcc_64
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
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
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
después de que se complete la instalación :
aarch64-linux-gnu-gcc -v
También puede ingresar aarch64 +TAB para verificar si la configuración es exitosa :
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:
/*
* 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
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
¡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
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
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
- El contenido del archivo es el siguiente:
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):
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.
Solución: Instale los componentes de compilaciónsudo apt-get install build-essential
para que se ejecuten correctamente
- Luego vuelva a hacer, se produce un error: ERROR del proyecto: compilar QtQml requiere Python.
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:
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
:
- Primero instale la biblioteca: consulte compilar el código fuente de Qt en el entorno Linux
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
- Aquí preste atención principalmente a la plataforma de destino xplatform y al directorio de instalación de extprefix: JetsonNano QT5.12.9 compilación cruzada y construcción del entorno
-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
make es el siguiente:
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
La instalación se realizó correctamente! ! !
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:
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):
- Compruebe la ubicación del compilador y estudie
usr/
el directorio:
Investigación sobre el directorio usr: ¿ Cuál es el significado de ?el directorio /usr del sistema Linux
usr en Puntos de resumen :
- Sin cambiar el archivo de configuración, la aplicación instalada por la herramienta Automake se instalará en
/usr/local/
el directorio; - 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
/bin
Son algunas instrucciones del sistema./sbin
Generalmente se refiere al comando de superusuario./usr/bin
Es el script en ejecución de algún software que instaló más tarde./usr/sbin
Coloque 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.- 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 .
$PATH
Puede verificar la RUTA , si lo es:PATH=$PATH:$HOME/bin
debe agregar lo siguiente:PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
- Vea los archivos relacionados con aarch en usr/bin/
y luego mire la carpeta aarch64-linux-gun en usr/
: ingrese la carpeta para ver el contenido de la siguiente manera:
- Sin cambiar el archivo de configuración, la aplicación instalada por la herramienta Automake se instalará en
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 :
1.4.2 Añadir kits de construcción (Kits)
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:
build Cree el proyecto y la carpeta del proyecto obtenido es la siguiente:
- Ver propiedades del archivo: ¡Verificación exitosa! ! !
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.