Raspberry Pi Beginners Guide/es
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.