Existe uma maneira de compilar programas Qt5, escritos com c ++, para o Ubuntu Touch?

9

Estou criando um programa com Qt5 e C ++ e gostaria de compilar meu programa para o Ubuntu Touch Preview ou o braço da área de trabalho do Ubuntu.

Estou executando esses sistemas no Nexus 7. Encontrei o compilador C ++ certo ( arm-linux-gnueabihf-g++), mas como posso fazer o Qt5 funcionar?

Johannes
fonte
Se a resposta de David Planella resolveu o seu problema, marque-o como "aceito".
fouric

Respostas:

11

O caminho fácil

Você pode usar um recurso experimental do Ubuntu SDK Alpha. A beleza disso é que você não precisa fazer uma compilação cruzada.

Primeiro, conecte-se ao seu dispositivo:

  1. Conecte seu dispositivo à porta USB do seu computador
  2. Iniciar Qt Creator
  3. Clique na guia dispositivos
  4. Clique no botão Ativar para ativar o modo de desenvolvedor
  5. Vá para Ferramentas> Ubuntu> Dispositivo> Ativar> Compilação de Cpp no ​​dispositivo Ubuntu (experimental)

Então comece a invadir:

  1. Abra o projeto do seu aplicativo no Qt Creator
  2. Vá para Build> Ubuntu> Projeto Build C ++ no dispositivo Ubuntu (experimental)

Criando projetos do C ++ Touch no dispositivo

E lá vai você! :-)

Se você gosta de um desafio

É possível compilar os aplicativos no dispositivo manualmente. Você pode tentar as seguintes etapas (não testadas):

  1. SSH no seu dispositivo executando o Ubuntu Touch Developer Preview
  2. Instale os pacotes de desenvolvimento necessários. Dependendo do que você precisa, pode ser necessário adicionar pacotes à lista, mas aqui está uma primeira tentativa:

    sudo apt-get install qt5-default qtbase5-dev libqt5v8-5-dev qtdeclarative5-dev libqt5xmlpatterns5-dev qtscript5-dev qttools5-dev qt3d5-dev qtmultimedia5-dev libqt5svg5-dev qtdeclarative5-dev-tools qttools5-dev-tools qtlocation5-dev qtsensors5-dev qtpim5-dev qt-components-ubuntu

  3. Crie seu aplicativo C ++ com seu sistema de criação preferido (cmake, qmake, etc ...)

David Planella
fonte
Muito obrigado pela sua resposta! Vou tentar isso com o SDK do Ubuntu. Felizmente, o Nexus 7 é um dispositivo completo, testei pela segunda maneira e também funciona bem.
Johannes
Felizmente, o Nexus 7 é um dispositivo completo, testei pela segunda vez com o braço da área de trabalho do Ubuntu e funciona bem, mas o Ubuntu Touch Developer Preview não encontra esses pacotes de desenvolvimento.
Johannes
David: Estou tentando fazer isso, mas recebo "Não é possível localizar o pacote" para cada item solicitado. Estou trabalhando em um Pandaboard com o Ubuntu 12.40. Pode me ajudar?
HMarioD
3

Há outra sugestão (terceira via, mas difícil):
1. obtenha o linaro toolchain para armhf
2. obtenha libhybris e platform-api (da phablet-team em launchpad.net )
3. obtenha libs dinâmicas do dispositivo ( / lib / arm- linux-gnueabihf e / usr / lib / arm-linux-gnueabihf / )
4. remenda mkspecs para qmake
5. compile
6. adicione <your_app> .desktop no arquivo / usr / share / applications /
7. adicione linhas em / usr / share / qml-phone-shell / Applications / applications.js (acho que é opcional)
8. forneça seu aplicativo e recursos
9. reinicie o shell ou o telefone
10. Seu aplicativo funcionou! (Eu testei isso!)

user135193
fonte
1

Instruções estendidas baseadas na resposta anterior. Lembre-se: esta instrução descreve o desenvolvimento de Qt / Qml no PC para Ubuntu Touch sem conexão ssh com o dispositivo e requer uma ferramenta de compilação cruzada como linaro.

PARTE 1: criando ambiente

  1. Obtenha o SDK do Ubuntu
  2. Obtenha toolchain: Linaro ou wia sudo apt-get install gcc-arm-linux-gnueabihf instale toolchain e suas dependências.
  3. Obtenha essas duas libs libhybris e platform-api e Qt5 libs para armhf (pode ser obtido no dispositivo) ou faça o download do tarball com todas as libs (do tarball você precisa de libs e cabeçalhos, coloque-os em / usr / arm-gnueabihf / lib e / usr / arm-gnueabihf / include ).
  4. Obtenha a configuração qmake modificada - faça o unrar no mkspecs (por exemplo, mina em / usr / share / qt5 / mkspecs / ). Diretório dentro do infravermelho - qmake.conf . Se algo falhou na compilação - é necessário alterar a variável de caminho nesse arquivo.
  5. Para o Qt Creator, crie um novo perfil de compilação: em Configurações de compilação e implantação , na guia Compilador - adicione um novo compilador ( arm-linux-gnueabihf-gcc ), na guia Ferramentas - adicione um novo perfil e especifique o tipo de dispositivo - Dispositivo linux geral, Compilador - os que você adicionou Profile Qt - genérico (não estou usando o Qt não recompilado !!!), Qt mkspec - linux-arm-gnueabihf-gcc. É tudo o que você precisa para compilar. Para depuração - é necessário especificar outros parâmetros. Além disso, é melhor recompilar o Qt de fontes. Mas eu sou preguiçoso)

PARTE 2: implantando aplicativo

  1. Wia adb push / data / ubuntu / <some_path> aplicativo e recursos push. O SO pode encontrá-los em / <some_path> . Observe que não há parte / data / ubuntu . Essa parte é necessária apenas pelo adb .
  2. Em seguida, é necessário criar o arquivo <app_name> .desktop :
    • raiz adb
    • shell adb
    • ubuntu_chroot shell - alterna para o bash no dispositivo
    • cd / usr / share / applications - vá para a pasta com arquivos * .desktop
    • Copie qualquer um deles e edite (com vi ) para a finalidade do seu aplicativo (nome, ícone, caminho etc.)
  3. Próxima etapa, igual à anterior (você já está no bash no dispositivo):
    edite o arquivo (com vi ) /usr/share/qml-phone-shell/Applications/applications.js , adicione parte do seu aplicativo no arquivo, assim como outros aplicativos tem nesse arquivo. Ele deve ser igual ao arquivo <app_name> .desktop
  4. Reinicialize o shell (matando o processo qml-phone-shell ) ou reinicie o telefone ( reboot -p )
  5. Agora você pode iniciar seu aplicativo na página Aplicativos !

Exemplo de teste e materiais originais: instrução EN e instrução RU com links para downloads de ferramentas e bibliotecas essenciais.

Dmitry Zagnoyko
fonte
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
RolandiXor