Share

Preparando o ambiente para o QT5

Nesse artigo veremos como compilar o QT5, incluindo suporte a aceleração gráfica por GPU, para o Rasbpian, o sistema operacional da Raspberry. A vantagem em se ter o QT5 com suporte a aceleração gráfica por GPU é que se pode rodar interfaces gráficas de forma mais fluída e até mesmo incluir animações. Já o Raspbian é um sistema operacional que é baseado em Debian e portanto, é super fácil instalar novos programas, configurar serviços, etc. Por outro lado, também é possível gerar um sistema customizado e mais leve com QT5, também incluindo suporte a aceleração gráfica por GPU, usando o Yocto [1].

Note que as instruções dadas aqui serão direcionadas para a Raspbery PI 2, e dessa forma, usaremos o cross compilador g++-arm-linux-gnueabihf. Ou seja, um toolchain com suporte a ponto flutuante por hardware. Caso você não tenha o g++-arm-linux-gnueabihf instalado, instale-o:

Também iremos necessitar de uma imagem do Raspbian em disco local e montada em uma pasta especifica. Você pode baixar uma das imagens aqui, mas usaremos o Raspbian Lite para esse artigo, o qual pode ser baixado nesse link aqui. Observe que o nome do arquivo muda conforme a data em que é baixado! Então faça os ajustes conforme o nome da imagem usada. Como usuário root, execute os seguintes passos:

Agora digite o seguinte comando para descobrir o offset da segunda partição na imagem da raspberry:

O resultado desse comando será algo como abaixo:

Observe o número após o segundo startsector, 131072. Esse é o offset da segunda partição que precisamos para o próximo comando. Mude conforme sua imagem. No momento em que esse texto é editado, existe a imagem 2017-01-11-raspbian-jessie-lite.img, cujo offset é 137216. Portanto você precisa colocar o offset conforme a imagem que está sendo usada!

Adicione esse comando no arquivo modules, com o offset correto confome indicado acima:

Como dito antes, mude o comando para o nome da imagem que você baixou no site da Raspberry. O caminho é o local onde a imagem foi baixada. Reinicie o sistema e verifique se a imagem foi montada, usando o comando mount. Esse passo é muito importante para que a compilação cruzada dos programas do QT 5 funcione. Depois de inicializar o sistema, digitando mount, você deveria ver algo como:

Agora vamos clonar o repositório do QT5, que a propósito, mudou de endereço:

Isso irá demorar um pouco! Depois de concluído, entre na pasta do QT5 e mude para a versão 5.5:

Agora devemos baixar os submódulos do QT5, digitando:

Para configurar o QT5 para ser compilado com suporte a aceleração gráfica por hardware, devemos habilitar o suporte a EGFLS [2]. Baixe o arquivo eglfs-brcm e coloque-o na pasta qt5/qtbase/config.tests/qpa/eglfs-brcm. Esse arquivo nos possibilita habilitar o suporte a EGFLS na Raspberry 2.

Agora, para fazer a configuração que precede a compilação, devemos digitar:

O resultado parcial da configuração deve ser algo como abaixo:

Se para você não aparecer ‘yes’ no EGLFS Raspberry Pi e em vez disso aparecer ‘no’, algo foi feito errado nos passos anteriores. Agora basta compilar o QT5, usando o comando:

Depois que a compilação for concluída, podemos instalar o QT5. Uma pasta irá ser copiada para a imagem da Raspberry montada em /mnt/rasp-pi-rootfs e outra será copiada para o PC, em /usr/local. Dessa forma, execute o comando seguinte como root:

Agora você deve copiar a imagem contendo a pasta do QT5 para o cartão uSD. Isso pode ser feito com o seguinte comando:

Substitua a letra X pela letra correspondente ao cartão uSD detectado no sistema. É possível descobrir o nome correto usando o comando “dmesg | tail”. E também mude o nome da imagem conforme a imagem que foi baixada!

Configurando o QT Creator

QTCreator é a IDE para gerar de forma fácil interfaces gráficas usando a biblioteca do QT. Para que seja gerado um arquivo executável que rode na Raspberry, é necessário configurar o QT Creator para usar um qmake especifico e o QT5 compilado no passo anterior. Antes de compilar um projeto do QT, é muito importante também que a imagem da Raspberry esteja montada, pois nela existem arquivos necessários para o processo de compilação cruzada. Então iniciemos baixando o QTCreator e outra ferramenta que será muito útil, o QtDesigner.

Após a instalação, abra o QT Creator, na barra de menu escolha a opção “Tools”, depois “Options”. No lado esquerdo, selecione a seção “Build & Run”. Agora seleciona a aba “QT Versions”, clique em “Add…”. No campo “file name” aponte para o caminho: /usr/local/qt5pi/bin/qmake e pressione “Open”.

qt_version

Depois disso, selecione a aba “Compilers”. Clique em “Add” e selecione a opção “GCC”. No campo “Name” coloque um nome sugestivo como GCC RPi, e clique em Browse e localize o caminho da toolchain. Se você usou o aptitude como mostrado acima, e você usa Debian ou uma variante dele, o caminho deve ser: /usr/bin/arm-linux-gnueabihf-g++.

qt_compilers

E finalmente escolha a aba “Kits” e clique em “Add..”.
Atribua um nome para o kit, escolha o tipo “Generic Linux Device”. Para o compilador, escolha aquele que adicionamos no passo anterior. E então escolha para “Qt Version”, a versão da Raspberry associada ao qmake, o qual também adicionamos no primeiro passo. Pressione Ok.

qt_kits

Dessa forma, finalizamos a configuração básica do QT Creator. Também é possível adicionar Debuggers e Devices, para debugar o programa diretamente na placa.

Exemplo de Programa para testar a configuração do QT5

Agora vejamos um exemplo simples de Widget no QT para testarmos a compilação cruzada no PC e execução no Raspbian. Abra o QT Creator e na tela de abertura, clique em “New Project” ou clique em “File” -> “New File or Project”. Na seção “Projects”, escolha a opção “Qt Widgets Application”. Depois clique em “Choose…”.

qt_newproj

Na próxima tela, escolha um nome para o projeto e um caminho. Na tela “Kit Selection”, escolha Desktop e Raspberry. Em “Class Information”, você pode deixar o nome padrão ou atribuir um nome qualquer. Na tela “Project Management”, você pode escolher o Git para controle de versão. E então clique em “Finish”.

Agora vejamos como adicionar um botão PushButton em nossa aplicação. Na árvore do projeto, em “Projects”, clique em “Forms”, e abra o arquivo de extensão .ui. Na seção “Buttons”, clique e arraste um Push Button para area da janela.

qt_hello

Com isso criamos uma interface simples para testarmos na Raspberry. Falta apenas um passo: a compilação do executavel para rodar na Raspberry.
No menu esquerdo, na parte inferior, clique em “Debug”, escolha o Kit da Raspberry. Depois clique no martelo para compilar.

barra_QT5

Se nenhuma mensagem de erro foi mostrada, então a compilção e a configuração do QT5 estão corretas! Transferia o executável para a placa, e execute com o comando:

Veja abaixo a execução do programa na Raspberry 2 usando um LCD HDMI de 5″.

HelloQt5_03

Referências

[1] http://www.embarcados.com.br/raspberry-pi-qt5-yocto-parte-1/
[2] http://doc.qt.io/qt-5/embedded-linux.html
[3] guide-to-cross-compile-qt-54-for-the-raspberry-pi

Translate »