Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Raspberry Pi Beginners Guide/es

From Qt Wiki
Jump to navigation Jump to search

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Introducción

Esta es una guía paso a paso para ayudar a los principiantes a hacer una compilación cruzada QT5 para la Raspberry Pi. Esto le permite a usted ser capaz de compilar aplicaciones Qt5 para la Raspberry Pi desde un PC, como también implementarlas en el dispositivo automáticamente y depurar programas. Las instrucciones se probaron en Ubuntu 15.04 pero deberían funcionar con cualquier sistema operativo basado en Debian.

Este artículo se centrará en la simplicidad, si usted está buscando personalización adicional, por favor revise guía detallada (en inglés).

Para obtener un tutorial detallado sobre la compilación cruzada en Windows, consulte este tutorial.

Para obtener una guía actualizada para la compilación cruzada de Qt 5.6 dirigida a eglfs y Raspbian Jessie, vea RaspberryPi2EGLFS.

Empezando

Primero creamos una carpeta para contener el código fuente y todos los archivos necesarios para hacer la compilación cruzada. Creamos un directorio llamado "opt" en la carpeta de inicio:

mkdir ~/opt
cd ~/opt

Ahora, descargamos los siguientes archivos:

  • Imagen de Raspbian Wheezy (aquí):
wget http://downloads.raspberrypi.org/raspbian_latest -O wheezy-raspbian-latest.zip
unzip wheezy-raspbian-latest.zip

Y lo montamos:

sudo mkdir /mnt/rasp-pi-rootfs
sudo mount -o loop,offset=62914560 2015-05-05-raspbian-wheezy.img /mnt/rasp-pi-rootfs

Nota: El nombre del archivo de imagen y el valor del offset en el comando de montaje anterior cambiarán con la última versión de Raspbian. Para obtener el valor de offset correcto utilice:

sudo fdisk -l /path/to/imagefile

Vas a ver algo como esto:

sudo fdisk -l ./2016-09-23-raspbian-jessie.img
Disk ./2016-09-23-raspbian-jessie.img: 4.1 GiB, 4348444672 bytes, 8493056 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd94ffdb3

Device                            Boot  Start     End Sectors Size Id Type
./2016-09-23-raspbian-jessie.img1        8192  137215  129024  63M  c W95 FAT32 (LBA)
./2016-09-23-raspbian-jessie.img2      137216 8493055 8355840   4G 83 Linux

La primera imagen es el sector de arranque. La segunda imagen es lo que desea montar. Obtenemos el offset correcto multiplicando el inicio del segundo sector (aquí 137216) por el tamaño del sector (aquí 512) para obtener el offset. Aquí el offset correcto es 137216 * 512 = 70254592

  • Descargue la herramienta de compilación cruzada:
wget https://www.dropbox.com/s/sl919ly0q79m1e6/gcc-4.7-linaro-rpi-gnueabihf.tbz
(or at http://de.sourceforge.jp/projects/sfnet_rfidmonitor/downloads/crosscompilation-resources/gcc-4.7-linaro-rpi-gnueabihf.tbz)
tar -xf gcc-4.7-linaro-rpi-gnueabihf.tbz

paulo@westeros:~/opt/qt5/qtimageformats$ Es una compilación de 32 bits, si estás ejecutándolo en una máquina de 64 bits (que sería lo más probable) necesitas instalar las librerías ia32:

paulo@westeros:~/opt$ sudo apt-get install ia32-libs

* ia32-libs ha sido reemplazado por Multiarch. Sustituyelo instalando lib32z1 lib32ncurses5 lib32bz2-1.0

  • Clona el repositorio cross-compile-tools:

Este repositorio contiene un script que se utilizará para corregir algunos enlaces simbólicos.

 git clone https://github.com/darius-kim/cross-compile-tools.git
  • Clona y ejecuta init para el repositorio de Qt5:
git clone git://code.qt.io/qt/qt5.git
cd qt5
./init-repository

Si tienes un firewall ./init-repository puede fallar. Primero ejecuta este comando:

sed -i 's/git:/https:git./' .gitmodules

Y vuelve a intentarlo:

./init-repository -f

Compilando qtbase

Ahora que tenemos todos los recursos necesarios para compilar Qt5 para Raspberry, necesitamos ejecutar un script para arreglar los enlaces simbólicos y las rutas lib:

cd ~/opt/cross-compile-tools
sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc

Ve a la carpeta qt5/qtbase y ejecuta:

./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi
make -j 4
sudo make install

Note: Si tu quieres el qmlscene binary debes añadir -make tools a el comando ./configure

Compilando otros módulos

Ahora que tienes qmake, puedes hacer compilación cruzada a los otros módulos. Para evitar errores de dependencias, se sugiere el siguiente orden: qtimageformats, qtsvg, qtjsbackend, qtscript, qtxmlpatterns, qtdeclarative, qtsensors, qt3d, qtgraphicaleffects, qtjsondb, qtlocation, qtdocgallery.

Para compilar, debes hacerlo igual que en el siguiente ejemplo:

paulo@westeros:~/opt/qt5$ cd qtimageformats
paulo@westeros:~/opt/qt5/qtimageformats$ /usr/local/qt5pi/bin/qmake .
paulo@westeros:~/opt/qt5/qtimageformats$ make -j4
paulo@westeros:~/opt/qt5/qtimageformats$ sudo make install

Transferencia de la imagen cambiada a la tarjeta SD

Después de completar estas instrucciones, la imagen de Raspberry Pi tendrá QT5 instalado en él ahora podemos copiarlo a la tarjeta SD usando dd:

paulo@westeros:~/opt/qt5$ cd~/opt/
paulo@westeros:~/opt$ sync; sudo umount /mnt/rasp-pi-rootfs
paulo@westeros:~/opt$ sudo dd bs=1M if=2015-05-05-raspbian-wheezy.img of=/dev/sdb; sync

Nota: Compruebe cuál es el nombre del dispositivo de su tarjeta SD ejecutando el siguiente comando que enumerará los dispositivos de almacenamiento en su computadora. No utilice el número al final, ya que es el número de partición y estamos escribiendo en toda la tarjeta SD:

sudo fdisk -l

Notas para macOS

  • Como su tarjeta SD va a estar particionada, macOS no dejará que la desmonte, entonces necesitará escribir:
sudo diskutil umountDisk /dev/disk3

Donde "disk3" será /dev/diskXsY que es donde su tarjeta SD apareció por primera vez.

  • Para realizar dd necesitará usar el índice de disco * r *, así que si su tarjeta SD es disk3 necesitará escribir:
sudo dd bs=1M if=2015-05-05-raspbian-wheezy.img of=/dev/rdisk3; sync

Arranque su Raspberry Pi.

Configurando Qt Creator

Para usar aporpiadamente el Qt Creator, se deben configurar las secciones "Qt Version" y "Tool Chains".

Configuración de Tool Chain

Vamos a la sección Tools -> Options..-> Build & Run -> Compilers . Damos click en "Add -> GCC". En "Compiler Path" establece la dirección "/home/<you>/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g+". Nombrarlo "ARM GCC" o parecido. obs: Ajústelo a su nombre de usuario.

Configuración de Qt Version

Ahora vamos a la sección Tools -> Options..-> Build & Run -> Qt Versions tab. Click en "Add.." y escoja su qmake para raspberry "/usr/local/qt5pi/bin/qmake".

Nota para macOS

  • Como /usr no es visible por defecto, se necesita abrir una terminal y escribir lo siguiente:
sudo SetFile -a v /usr
  • Después de que haya completado la selección de su qmake, si desea volver invisible a /usr ota vez, escribe el mismo comando con la mayúscula V :
sudo SetFile -a V /usr

Una alternativa a esto es usar CMD+SHIFT+. (punto) en el cuadro de dialogo del archivo para volver momentaneamente visible un archivo invisible.

Configurando dispositivos Linux

Vamos a la sección Tools -> Options…-> Devices -> Devices.

Añada un nuevo ajuste de configuración a "Generic Linux Device" Hostname or IP address es la IP de su Raspberry user es pi password es raspberry obs: Este es el usuario y contraseña por defecto de la Raspberry

Ruta de Destino

Cuando usted trta de desplegar un programa en su Raspberry Pi desde Qtcreator, usted debe obtener un error sobre un comando desconocido. Esto se debe a que Qtcreator no conoce donde va a copiar en la Raspberry el archivo compilado. La siguiente linea debe ser adherida a su archivo .pro :

target.path = /home/pi/

Puede cambiar la ruta a cualquier cosa que desee y el ejecutable se copiará y ejecutará desde esta ubicación.


Ahora está listo para ejecutar su primer proyecto Qt Raspberry Pi.

Proyecto de ejemplo

Descargue el proyecto hello world:

paulo@westeros:~$ git clone https://git.gitorious.org/qt5-raspberrypi-example/qt5-raspberrypi-example.git

Abra el proyecto en Qt Creator y vaya a la sección Projects . Click en Manage Kits y luego en Add. Llenamos lo siguiente: Name: Raspberry Pi Device Type: Generic Linux Device Device: Raspberry Pi Compiler: ARM GCC Debugger->Manage->Edit->"/home/<you>/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gdb" (cambia tu nombre de usuario) Qt version: Qt 5.x.x (qt5pi) Ok->Add Kit->Raspberry Pi

Luego ir a "Rasperry Pi" kit tab->System Environment y añadir LD_LIBRARY_PATH que está configurado para /usr/local/qt5pi/lib

Ahora ya puede crear y ejecutar su aplicación desde Qt creator.