¿Hay alguna forma de compilar programas Qt5, escritos con c ++, en Ubuntu Touch?

9

Estoy creando un programa con Qt5 y C ++, y me gustaría compilar mi programa para Ubuntu Touch Preview o Ubuntu Desktop Arm.

Estoy ejecutando esos sistemas en Nexus 7. He encontrado el compilador C ++ correcto ( arm-linux-gnueabihf-g++), pero ¿cómo puedo hacer que Qt5 funcione?

Johannes
fuente
Si la respuesta de @David Planella ha resuelto su problema, debe marcarlo como "aceptado".
Fouric

Respuestas:

11

La manera fácil

Puede usar una función experimental de Ubuntu SDK Alpha. Lo bueno de esto es que no necesitas hacer una compilación cruzada.

Primero conéctese a su dispositivo:

  1. Conecte su dispositivo al puerto USB de su computadora
  2. Inicie Qt Creator
  3. Haga clic en la pestaña de dispositivos
  4. Haga clic en el botón Habilitar para habilitar el modo desarrollador
  5. Vaya a Herramientas> Ubuntu> Dispositivo> Habilitar> Compilación de Cpp en dispositivo Ubuntu (experimental)

Luego comienza a hackear:

  1. Abra el proyecto de su aplicación en Qt Creator
  2. Vaya a Build> Ubuntu> Build C ++ project en el dispositivo Ubuntu (experimental)

Crear proyectos de C ++ Touch en el dispositivo

Y listo! :-)

Si te gusta un reto

Podrías compilar las aplicaciones en el dispositivo a mano. Es posible que desee probar los siguientes pasos (no probados):

  1. SSH en su dispositivo con Ubuntu Preview Developer Preview
  2. Instale los paquetes de desarrollo necesarios. Dependiendo de lo que necesite, es posible que necesite agregar paquetes a la lista, pero aquí hay una primera oportunidad:

    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. Construya su aplicación C ++ con su sistema de construcción de elección (cmake, qmake, etc.)

David Planella
fuente
Muchas gracias por tu respuesta! Lo intentaré con Ubuntu SDK. Afortunadamente, Nexus 7 es un dispositivo lleno de energía, probé la segunda forma y también funciona bien.
Johannes
Afortunadamente, Nexus 7 es un dispositivo lleno de energía, probé la segunda forma con el brazo de escritorio de Ubuntu y funciona bien, pero Ubuntu Touch Developer Preview no encuentra esos paquetes de desarrollo.
Johannes
David: Estoy tratando de hacer eso, pero aparece "No se puede encontrar el paquete" para cada elemento solicitado. Estoy trabajando en un Pandaboard con Ubuntu 12.40. ¿Me puedes ayudar?
HMarioD
3

Hay otra sugerencia (tercera forma, pero difícil):
1. obtener linaro toolchain para armhf
2. obtener libhybris y plataforma-api (de phablet-team en launchpad.net )
3. obtener libs dinámicas del dispositivo ( / lib / arm- linux-gnueabihf y / usr / lib / arm-linux-gnueabihf / )
4. parchee mkspecs para qmake
5. compile
6. agregue el archivo <su_app> .desktop a / usr / share / aplicaciones /
7. agregue líneas a / usr / share / qml-phone-shell / Applications / aplicaciones.js (puede ser opcional, creo)
8. empuje su aplicación y recursos
9. reinicie el shell o el teléfono
10. ¡Su aplicación funcionó! (¡Probé esto!)

usuario135193
fuente
1

Instrucción extendida fundada en la respuesta anterior. Recuerde: esta instrucción describe el desarrollo de Qt / Qml en PC para Ubuntu Touch sin conexión ssh con el dispositivo y requiere una herramienta de compilación cruzada como linaro.

PARTE 1: haciendo ambiente

  1. Obtenga Ubuntu SDK
  2. Obtener toolchain: Linaro o wia sudo apt-get install gcc-arm-linux-gnueabihf install toolchain y sus dependencias.
  3. Obtenga estas dos bibliotecas libhybris y plataforma-api más bibliotecas Qt5 para armhf (se puede obtener del dispositivo) o simplemente descargue tarball con todas las bibliotecas (de tarball necesita libs y encabezados, colóquelos en / usr / arm-gnueabihf / lib y / usr / arm-gnueabihf / include ).
  4. Obtenga qmake config modificado : descomprímalo en mkspecs (por ejemplo, mina en / usr / share / qt5 / mkspecs / ). Directorio interno no calificado: qmake.conf . Si algo falta en la compilación, es necesario alterar la variable de ruta en ese archivo.
  5. Para Qt Creator, cree un nuevo perfil de compilación: en Configuración de compilación e implementación , en la pestaña Compilador : agregue un nuevo compilador ( arm-linux-gnueabihf-gcc ), en la pestaña Herramientas : agregue un nuevo perfil y especifique el Tipo de dispositivo - Dispositivo general de Linux, Compilador - unos, que le agreguen Perfil Qt - genérico (estoy usando Qt no recompilado !!!), Qt mkspec - linux-arm-gnueabihf-gcc. Es todo lo que necesitas para compilar. Para la depuración, es necesario especificar otros parámetros. Y al lado, es mejor recompilar Qt de las fuentes. Pero soy vago, así que)

PARTE 2: implementación de la aplicación

  1. Wia adb push / data / ubuntu / <some_path> aplicación y recursos push. El sistema operativo puede encontrarlos en / <some_path> . Tenga en cuenta que no hay parte / data / ubuntu . Esa parte solo la necesita adb .
  2. A continuación, debe hacer <app_name> .desktop file:
    • raíz adb
    • adb shell
    • ubuntu_chroot shell - cambia a bash en el dispositivo
    • cd / usr / share / aplicaciones : vaya a la carpeta con archivos * .desktop
    • Copie cualquiera de ellos y edite (con vi ) para el propósito de su aplicación (nombre, icono, ruta, etc.)
  3. Siguiente paso, igual que el anterior (ya está en bash en el dispositivo):
    edite el archivo (con vi ) /usr/share/qml-phone-shell/Applications/applications.js , agregue parte de su aplicación en el archivo, al igual que otras aplicaciones tener en ese archivo. Debe ser el mismo que en <app_name> .desktop file
  4. Reinicie el shell ( eliminando el proceso qml-phone-shell ) o reinicie el teléfono ( reboot -p )
  5. ¡Ahora puede iniciar su aplicación desde la página de aplicaciones !

Ejemplo de prueba y materiales originales: instrucción EN e instrucción RU con enlaces para la cadena de herramientas de descargas y libs esenciales.

Dmitry Zagnoyko
fuente
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
RolandiXor