Esiste un modo per compilare programmi Qt5, scritti con c ++, su Ubuntu Touch?


9

Sto creando un programma con Qt5 e C ++ e vorrei compilare il mio programma per Ubuntu Touch Preview o Ubuntu desktop arm.

Sto eseguendo quei sistemi su Nexus 7. Ho trovato il compilatore C ++ giusto ( arm-linux-gnueabihf-g++), ma come posso far funzionare Qt5?


Se la risposta di @David Planella ha risolto il tuo problema, dovresti contrassegnarlo come "accettato".
Fouric

Risposte:


11

Il modo semplice

È possibile utilizzare una funzione sperimentale di Ubuntu SDK Alpha. Il bello è che non è necessario eseguire la compilazione incrociata.

Innanzitutto connettiti al tuo dispositivo:

  1. Collegare il dispositivo alla porta USB del computer
  2. Avvia Qt Creator
  3. Fai clic sulla scheda Dispositivi
  4. Fai clic sul pulsante Abilita per abilitare la modalità sviluppatore
  5. Vai su Strumenti> Ubuntu> Dispositivo> Abilita> Compilazione Cpp sul dispositivo Ubuntu (sperimentale)

Quindi inizia l'hacking:

  1. Apri il progetto della tua app in Qt Creator
  2. Vai a Build> Ubuntu> Crea progetto C ++ su dispositivo Ubuntu (sperimentale)

Creazione di progetti Touch C ++ sul dispositivo

E via! :-)

Se ti piace una sfida

È possibile compilare manualmente le app sul dispositivo manualmente. Potresti voler provare i seguenti passaggi (non testati):

  1. SSH sul tuo dispositivo con Ubuntu Touch Developer Preview
  2. Installa i pacchetti di sviluppo richiesti. A seconda di ciò di cui hai bisogno, potresti dover aggiungere pacchetti all'elenco, ma ecco un primo colpo:

    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. Crea la tua app C ++ con il tuo sistema di compilazione preferito (cmake, qmake, ecc ...)


Grazie mille per la tua risposta! Lo proverò con Ubuntu SDK. Fortunatamente Nexus 7 è un dispositivo full power, ho provato il secondo modo e funziona anche bene.
Johannes,

Fortunatamente Nexus 7 è un dispositivo pieno di energia, ho provato il secondo modo con il braccio desktop Ubuntu e funziona bene, ma Ubuntu Touch Developer Preview non trova quei pacchetti di sviluppo.
Johannes,

David: Sto provando a farlo ma ricevo "Impossibile trovare il pacchetto" per ogni articolo richiesto. Sto lavorando in un Pandaboard con Ubuntu 12.40. Mi potete aiutare?
HMarioD,

3

C'è un altro suggerimento (terzo modo, ma difficile):
1. get linaro toolchain per armhf
2. get libhybris e platform-api (da phablet-team su launchpad.net )
3. get libs dinamici dal dispositivo ( / lib / arm- linux-gnueabihf e / usr / lib / arm-linux-gnueabihf / )
4. patch mkspecs per qmake
5. compilare
6. aggiungere il file <your_app> .desktop a / usr / share / applicazioni /
7. aggiungere linee a / usr / share / qml-phone-shell / Applications / application.js (potrebbe essere facoltativo, credo)
8. spingere la tua app e risorse
9. riavvia la shell o il telefono
10. La tua app funzionata! (L'ho provato!)


1

Istruzioni estese basate sulla risposta precedente. Ricorda: questa istruzione descrive lo sviluppo di Qt / Qml su PC per Ubuntu Touch senza connessione ssh con il dispositivo e richiede uno strumento di compilazione incrociata come Linaro.

PARTE 1: creare ambiente

  1. Ottieni Ubuntu SDK
  2. Ottieni toolchain: Linaro o wia sudo apt-get install gcc-arm-linux-gnueabihf installa toolchain e le sue dipendenze.
  3. Ottieni questi due libhybris libhybris e platform-api oltre a libt Qt5 per armhf (può essere ottenuto dal dispositivo) o scarica tarball con tutti i libs (da tarball hai bisogno delle librerie e delle intestazioni, mettili su / usr / arm-gnueabihf / lib e / usr / arm-gnueabihf / include ).
  4. Ottieni la configurazione modificata di qmake - annullala in mkspecs (ad esempio, il mio su / usr / share / qt5 / mkspecs / ). All'interno della directory unrared - qmake.conf . Se qualcosa non ha funzionato durante la compilazione, è necessario modificare la variabile del percorso in quel file.
  5. Per Qt Creator crea un nuovo profilo di compilazione: in Impostazioni di compilazione e distribuzione , nella scheda Compilatore : aggiungi un nuovo compilatore ( arm-linux-gnueabihf-gcc ), nella scheda Strumenti : aggiungi un nuovo profilo e specifica il tipo di dispositivo - Generale linux-device, Compilatore - quelli, che si aggiunge Profilo Qt - generico (non sto usando Qt !!! ricompilato), Qt mkspec - linux-arm-gnueabihf-gcc. È tutto ciò che serve per la compilazione. Per il debug - è necessario specificare altri parametri. Inoltre, è meglio ricompilare Qt dalle fonti. Ma sono così pigro)

PARTE 2: distribuzione dell'app

  1. Wia adb push / data / ubuntu / <some_path> push app e risorse. Il sistema operativo può trovarli su / <some_path> . Nota, non ci sono parti / data / ubuntu . Quella parte è necessaria solo per adb .
  2. Successivamente, è necessario creare il file <app_name> .desktop :
    • radice adb
    • shell adb
    • ubuntu_chroot shell - passa a bash sul dispositivo
    • cd / usr / share / applicazioni : vai nella cartella con i file * .desktop
    • Copia uno di essi e modifica (con vi ) per lo scopo della tua app (nome, icona, percorso, ecc.)
  3. Passaggio successivo, uguale al precedente (sei già in bash sul dispositivo):
    modifica il file (con vi ) /usr/share/qml-phone-shell/Applications/applications.js , aggiungi parte della tua app nel file, come altre app avere in quel file. Deve essere lo stesso in <app_name> .desktop di file
  4. Riavvia la shell (uccidendo il processo qml-phone-shell ) o riavvia il telefono ( riavvia -p )
  5. Ora puoi avviare la tua app dalla pagina App !

Esempio di test e materiali originali: istruzione EN e istruzione RU con collegamenti per toolchain di download e librerie essenziali.


Benvenuti in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
RolandiXor
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.