Raspberry

Cross compile Raspberry Pi – Gere binários em qualquer lugar!

Text to speech com Raspberry | Gerar binário a partir do script Python | resolvendo nomes | iniciar programa no boot | Multithread no Raspberry | Compilar programas escritos em Python

Compilação nativa do Qt no Raspberry é uma roleta russa. Passei 4 dias tentando uma configuração específica. Na última tentativa, um erro ocorreu após 14 horas e 40 minutos de compilação. Óbvio que não é viável compilar diretamente no Raspberrry quando se tratar de algo de tamanha complexidade. Cross compile é sem dúvidas a melhor opção.

Ao final, não levei mais de 10 minutos para ter o Qt compilado utilizando 6 dos meus 8 processadores, mas ainda assim não consegui a compilação desejada. Enfim, continua sendo útil. Vamos ao processo, para Raspbian 32bits.

Do mesmo modo do artigo anterior, essa compilação é para embedded, considerando a ausência de servidor gráfico e desktop. Compilando dessa maneira, você terá acesso ao framebuffer e também poderá acessar diretamente a aplicação por VNC.

Estrutura para o cross compile

Primeiro devemos ter uma estrutura para o cross compile. Nem adianta muito eu definir as dependências, pois certamente você pode ter outras diferentes. Por essa razão, recomendo apenas que siga os passos e supra as dependências conforme elas forem aparecendo.

Crie o diretório onde tudo acontecerá. Como precisei escrever em outra partição, tenho um diretório com meu nome na raiz do sistema. Crie em seu home, em uma mídia externa ou onde desejar, só não se esqueça de relacionar os paths adequadamente.

Crie o sysroot

Nem tente fazer com sshfs, eu tentei por diversas vezes, mas devido à necessidade de modificar alguns links, acaba sendo melhor evitar o problema com o sistema no Raspberry.

Aí alguém fez de boa vontade um singelo script Python para fazer os devidos relacionamentos dos links no sysroot. Baixe-o e execute-o.

Toolchains e Qt source

Agora precisamos baixar a toolchain e os fontes do Qt para compilação. Recomendo fortemente que use a versão desse artigo; comecei pelo 5.13.1 e fui baixando até a 5.9, então desisti e fui subindo para as mais atuais com o novo procedimento (esse que estou descrevendo aqui).

Após baixado, será necessário fazer umas mdificações no qmake.conf do mkspecs da respectiva plataforma. O arquivo a editar e o procedimento é o descrito a seguir, mas não erre dentro do editor Vi senão você vai acabar tendo que reiniciar o Raspberry desligando na energia (sério). Se já tiver experiência com Vi, então será tranquilo.

Compilar o Qt

Agora entre no diretório criado no download dos fontes (qtbase) e já esteja como root. Não ache que será transparente, já estar como root evitará digitar “sudo” toda a hora.

Instalar o Qt

Compilando dessa forma traz uma vantagem; além de ter o Qt para o Raspberry, também haverá uma cópia no seu computador X86, que permitirá gerar o binário e enviar o resultado pronto para execução no Raspberry.

Quanto fizer o make install, será criado (um nível abaixo do qtbase) o diretório qt5pi. Já para o Qt cross compilado a manter no sistema, escolhi /djames/qt5.

O que devemos copiar para o Raspberry é o qt5pi. Para isso, precisamos criar previamente a estrutura de diretórios necessária e então copiar com rsync. Do seu computador mesmo, execute remotamente os comandos no Raspberry assim:

O último comando faz a cópia.

Após esse processo, já pode se divertir programando em Qt para o Raspberry. Se precisar de mais parâmetros do QPA (sugiro que leia o artigo anterior), pode dar uma olhada na documentação nesse link.

Instalar o Qt via apt-get no Raspberry

Sim, é possível. Eu fiz isso em um dos sistemas, consegui algumas plataformas interessantes: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb.

Considerando o cross compile, tenho ainda a opção de VNC, portanto, estou plenamente satisfeito. Agora é só chegar o material do Baú da Eletrônica pra começar a diversão e os vídeos!

Fazendo a conexão ssh com a flag -X, pude executar remotamente um programa de teste usando a plataforma xcb:

cross compile Raspberry Pi

É a forma menos dolorida de ter o Qt para desenvolvimento, mas a grande vantagem de cross compile é que fica fácil enviar só o programa e suas dependências para o Raspberry, de forma que seu cliente não terá um ambiente de desenvolvimento instalado no sistema de produção.

Por enquanto é isso, mas em breve trago uma novidade bacana do nosso parceiro Baú da Eletrônica, que está dando 30% de desconto em todo o site (exceto ferramentas) do dia 13 ao dia 20 de Setembro de 2019 (data para constar no histórico).

O material está recém chegou, farei um vídeo um pouco diferente do padrão. Estou bastante apreensivo quanto a forma que será recebido pelos inscritos no canal, mas se você é do tipo curioso, se inscreva em nosso canal DobitAoByteBrasil no Youtube e clique no sininho para receber notificações. No mínimo lhe darei argumento para fazer uma bela crítica! – Mas se gostar, deixe seu like!

Até a próxima!

2 comments

Comments are closed.

%d blogueiros gostam disto: